maximum recursion depth exceeded while calling a Python object
Request Method: | POST |
---|---|
Request URL: | https://django-classified.herokuapp.com/new/ |
Django Version: | 2.2.8 |
Exception Type: | RecursionError |
Exception Value: | maximum recursion depth exceeded while calling a Python object |
Exception Location: | /app/.heroku/python/lib/python3.7/email/utils.py in _has_surrogates, line 57 |
Python Executable: | /app/.heroku/python/bin/python |
Python Version: | 3.7.3 |
Python Path: | ['/app/.heroku/python/bin', '/app', '/app/.heroku/python/lib/python37.zip', '/app/.heroku/python/lib/python3.7', '/app/.heroku/python/lib/python3.7/lib-dynload', '/app/.heroku/python/lib/python3.7/site-packages'] |
Server time: | Mon, 27 Jan 2020 15:24:13 +0000 |
/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/exception.py
in inner
This decorator is automatically applied to all middleware to ensure that
no middleware leaks an exception and that the next middleware in the stack
can rely on getting a response instead of an exception.
"""
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | RecursionError('maximum recursion depth exceeded while calling a Python object') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f918c8a1c50>> |
request | <WSGIRequest: POST '/new/'> |
/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py
in _get_response
break
if response is None:
wrapped_callback = self.make_view_atomic(callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs)
except Exception as e:
response = self.process_exception_by_middleware(e, request)…
# Complain if the view returned None (a common error).
if response is None:
if isinstance(callback, types.FunctionType): # FBV
view_name = callback.__name__
else: # CBV
Variable | Value |
---|---|
callback | <function ItemCreateView at 0x7f91870f62f0> |
callback_args | () |
callback_kwargs | {} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f918720beb8>> |
request | <WSGIRequest: POST '/new/'> |
resolver | <URLResolver 'project.urls' (None:None) '^/'> |
resolver_match | ResolverMatch(func=django_classified.views.ItemCreateView, args=(), kwargs={}, url_name=item-new, app_names=['django_classified'], namespaces=['django_classified'], route=^new/$) |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f918c8a1c50> |
wrapped_callback | <function ItemCreateView at 0x7f91870f62f0> |
/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py
in _get_response
response = middleware_method(request, callback, callback_args, callback_kwargs)
if response:
break
if response is None:
wrapped_callback = self.make_view_atomic(callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs)…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
# Complain if the view returned None (a common error).
if response is None:
if isinstance(callback, types.FunctionType): # FBV
Variable | Value |
---|---|
callback | <function ItemCreateView at 0x7f91870f62f0> |
callback_args | () |
callback_kwargs | {} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f918720beb8>> |
request | <WSGIRequest: POST '/new/'> |
resolver | <URLResolver 'project.urls' (None:None) '^/'> |
resolver_match | ResolverMatch(func=django_classified.views.ItemCreateView, args=(), kwargs={}, url_name=item-new, app_names=['django_classified'], namespaces=['django_classified'], route=^new/$) |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f918c8a1c50> |
wrapped_callback | <function ItemCreateView at 0x7f91870f62f0> |
/app/.heroku/python/lib/python3.7/site-packages/django/views/decorators/cache.py
in _wrapped_view_func
def never_cache(view_func):
"""
Decorator that adds headers to a response so that it will never be cached.
"""
@wraps(view_func)
def _wrapped_view_func(request, *args, **kwargs):
response = view_func(request, *args, **kwargs)…
add_never_cache_headers(response)
return response
return _wrapped_view_func
Variable | Value |
---|---|
args | () |
kwargs | {} |
request | <WSGIRequest: POST '/new/'> |
view_func | <function ItemCreateView at 0x7f9187190510> |
/app/.heroku/python/lib/python3.7/site-packages/django/views/generic/base.py
in view
self.head = self.get
self.setup(request, *args, **kwargs)
if not hasattr(self, 'request'):
raise AttributeError(
"%s instance has no 'request' attribute. Did you override "
"setup() and forget to call super()?" % cls.__name__
)
return self.dispatch(request, *args, **kwargs)…
view.view_class = cls
view.view_initkwargs = initkwargs
# take name and docstring from class
update_wrapper(view, cls, updated=())
Variable | Value |
---|---|
args | () |
cls | <class 'django_classified.views.ItemCreateView'> |
initkwargs | {} |
kwargs | {} |
request | <WSGIRequest: POST '/new/'> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django/utils/decorators.py
in _wrapper
# bound_method has the signature that 'decorator' expects i.e. no
# 'self' argument, but it's a closure over self so it can call
# 'func'. Also, wrap method.__get__() in a function because new
# attributes can't be set on bound method objects, only on functions.
bound_method = partial(method.__get__(self, type(self)))
for dec in decorators:
bound_method = dec(bound_method)
return bound_method(*args, **kwargs)…
# Copy any attributes that a decorator adds to the function it decorates.
for dec in decorators:
_update_method_wrapper(_wrapper, dec)
# Preserve any existing attributes of 'method', including the name.
update_wrapper(_wrapper, method)
Variable | Value |
---|---|
args | (<WSGIRequest: POST '/new/'>,) |
bound_method | <function user_passes_test.<locals>.decorator.<locals>._wrapped_view at 0x7f91866e3d08> |
dec | <function login_required at 0x7f918717bd08> |
decorators | [<function login_required at 0x7f918717bd08>] |
kwargs | {} |
method | <function ItemCreateView.dispatch at 0x7f918712dbf8> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django/contrib/auth/decorators.py
in _wrapped_view
that takes the user object and returns True if the user passes.
"""
def decorator(view_func):
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
if test_func(request.user):
return view_func(request, *args, **kwargs)…
path = request.build_absolute_uri()
resolved_login_url = resolve_url(login_url or settings.LOGIN_URL)
# If the login url is the same scheme and net location then just
# use the path as the "next" url.
login_scheme, login_netloc = urlparse(resolved_login_url)[:2]
current_scheme, current_netloc = urlparse(path)[:2]
Variable | Value |
---|---|
args | () |
kwargs | {} |
login_url | None |
redirect_field_name | 'next' |
request | <WSGIRequest: POST '/new/'> |
test_func | <function login_required.<locals>.<lambda> at 0x7f91866e3840> |
view_func | functools.partial(<bound method ItemCreateView.dispatch of <django_classified.views.ItemCreateView object at 0x7f9186717400>>) |
/app/.heroku/python/lib/python3.7/site-packages/django_classified/views.py
in dispatch
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
profile = Profile.get_or_create_for_user(self.request.user)
if not profile.allow_add_item():
messages.error(self.request, _('You have reached the limit!'))
return redirect(reverse('django_classified:user-items'))
return super(ItemCreateView, self).dispatch(*args, **kwargs)…
def form_valid(self, form, formset):
form.instance.user = self.request.user
form.save()
return super(ItemCreateView, self).form_valid(form, formset)
Variable | Value |
---|---|
__class__ | <class 'django_classified.views.ItemCreateView'> |
args | (<WSGIRequest: POST '/new/'>,) |
kwargs | {} |
profile | <Profile: Profile object (78)> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django/views/generic/base.py
in dispatch
# Try to dispatch to the right method; if a method doesn't exist,
# defer to the error handler. Also defer to the error handler if the
# request method isn't on the approved list.
if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
return handler(request, *args, **kwargs)…
def http_method_not_allowed(self, request, *args, **kwargs):
logger.warning(
'Method Not Allowed (%s): %s', request.method, request.path,
extra={'status_code': 405, 'request': request}
)
Variable | Value |
---|---|
args | () |
handler | <bound method FormsetMixin.post of <django_classified.views.ItemCreateView object at 0x7f9186717400>> |
kwargs | {} |
request | <WSGIRequest: POST '/new/'> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django_classified/views.py
in post
if getattr(self, 'is_update_view', False):
self.object = self.get_object()
form_class = self.get_form_class()
form = self.get_form(form_class)
formset_class = self.get_formset_class()
formset = self.get_formset(formset_class)
if form.is_valid() and formset.is_valid():
return self.form_valid(form, formset)…
else:
return self.form_invalid(form, formset)
def get_formset_class(self):
return self.formset_class
Variable | Value |
---|---|
args | () |
form | <ItemForm bound=True, valid=True, fields=(area;group;title;description;price;is_active)> |
form_class | <class 'django_classified.forms.ItemForm'> |
formset | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
formset_class | <class 'django.forms.formsets.ImageFormFormSet'> |
kwargs | {} |
request | <WSGIRequest: POST '/new/'> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django_classified/views.py
in form_valid
return super(ItemCreateView, self).dispatch(*args, **kwargs)
def form_valid(self, form, formset):
form.instance.user = self.request.user
form.save()
return super(ItemCreateView, self).form_valid(form, formset)…
def get_initial(self):
initial = super(ItemCreateView, self).get_initial()
initial['area'] = Area.get_for_request(self.request)
return initial
Variable | Value |
---|---|
__class__ | <class 'django_classified.views.ItemCreateView'> |
form | <ItemForm bound=True, valid=True, fields=(area;group;title;description;price;is_active)> |
formset | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django_classified/views.py
in form_valid
'files': self.request.FILES,
})
return kwargs
def form_valid(self, form, formset):
self.object = form.save()
formset.instance = self.object
formset.save()…
if hasattr(self, 'get_success_message'):
self.get_success_message(form)
return redirect(self.object.get_absolute_url())
def form_invalid(self, form, formset):
return self.render_to_response(self.get_context_data(form=form, formset=formset))
Variable | Value |
---|---|
form | <ItemForm bound=True, valid=True, fields=(area;group;title;description;price;is_active)> |
formset | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
self | <django_classified.views.ItemCreateView object at 0x7f9186717400> |
/app/.heroku/python/lib/python3.7/site-packages/django/forms/models.py
in save
if not commit:
self.saved_forms = []
def save_m2m():
for form in self.saved_forms:
form.save_m2m()
self.save_m2m = save_m2m
return self.save_existing_objects(commit) + self.save_new_objects(commit)…
save.alters_data = True
def clean(self):
self.validate_unique()
Variable | Value |
---|---|
commit | True |
self | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
/app/.heroku/python/lib/python3.7/site-packages/django/forms/models.py
in save_new_objects
for form in self.extra_forms:
if not form.has_changed():
continue
# If someone has marked an add form for deletion, don't save the
# object.
if self.can_delete and self._should_delete_form(form):
continue
self.new_objects.append(self.save_new(form, commit=commit))…
if not commit:
self.saved_forms.append(form)
return self.new_objects
def add_fields(self, form, index):
"""Add a hidden field for the object's primary key."""
Variable | Value |
---|---|
commit | True |
form | <ImageForm bound=True, valid=True, fields=(file;id;DELETE;item)> |
self | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
/app/.heroku/python/lib/python3.7/site-packages/django/forms/models.py
in save_new
return cls.fk.remote_field.get_accessor_name(model=cls.model).replace('+', '')
def save_new(self, form, commit=True):
# Ensure the latest copy of the related instance is present on each
# form (it may have been saved after the formset was originally
# instantiated).
setattr(form.instance, self.fk.name, self.instance)
return super().save_new(form, commit=commit)…
def add_fields(self, form, index):
super().add_fields(form, index)
if self._pk_field == self.fk:
name = self._pk_field.name
kwargs = {'pk_field': True}
Variable | Value |
---|---|
__class__ | <class 'django.forms.models.BaseInlineFormSet'> |
commit | True |
form | <ImageForm bound=True, valid=True, fields=(file;id;DELETE;item)> |
self | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
/app/.heroku/python/lib/python3.7/site-packages/django/forms/models.py
in save_new
# on django-dev, max_num should not prevent existing
# related objects/inlines from being displayed.
self._queryset = qs
return self._queryset
def save_new(self, form, commit=True):
"""Save and return a new model instance for the given form."""
return form.save(commit=commit)…
def save_existing(self, form, instance, commit=True):
"""Save and return an existing model instance for the given form."""
return form.save(commit=commit)
def delete_existing(self, obj, commit=True):
Variable | Value |
---|---|
commit | True |
form | <ImageForm bound=True, valid=True, fields=(file;id;DELETE;item)> |
self | <django.forms.formsets.ImageFormFormSet object at 0x7f9186724940> |
/app/.heroku/python/lib/python3.7/site-packages/django/forms/models.py
in save
"The %s could not be %s because the data didn't validate." % (
self.instance._meta.object_name,
'created' if self.instance._state.adding else 'changed',
)
)
if commit:
# If committing, save the instance and the m2m data immediately.
self.instance.save()…
self._save_m2m()
else:
# If not committing, add a method to the form to allow deferred
# saving of m2m data.
self.save_m2m = self._save_m2m
return self.instance
Variable | Value |
---|---|
commit | True |
self | <ImageForm bound=True, valid=True, fields=(file;id;DELETE;item)> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py
in save
if not field.primary_key and not hasattr(field, 'through'):
field_names.add(field.attname)
loaded_fields = field_names.difference(deferred_fields)
if loaded_fields:
update_fields = frozenset(loaded_fields)
self.save_base(using=using, force_insert=force_insert,
force_update=force_update, update_fields=update_fields)…
save.alters_data = True
def save_base(self, raw=False, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Handle the parts of saving which should be done only once per save,
Variable | Value |
---|---|
deferred_fields | set() |
field | <sorl.thumbnail.fields.ImageField: file> |
force_insert | False |
force_update | False |
obj | <Item: 3,999 bass guitars for sale> |
self | <Image: Image object (None)> |
update_fields | None |
using | 'default' |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py
in save_base
context_manager = transaction.mark_for_rollback_on_error(using=using)
with context_manager:
parent_inserted = False
if not raw:
parent_inserted = self._save_parents(cls, using, update_fields)
updated = self._save_table(
raw, cls, force_insert or parent_inserted,
force_update, using, update_fields,…
)
# Store the database on which the object was saved
self._state.db = using
# Once saved, this is no longer a to-be-added instance.
self._state.adding = False
Variable | Value |
---|---|
cls | <class 'django_classified.models.Image'> |
context_manager | <contextlib._GeneratorContextManager object at 0x7f9185368a90> |
force_insert | False |
force_update | False |
meta | <Options for Image> |
origin | <class 'django_classified.models.Image'> |
parent_inserted | False |
raw | False |
self | <Image: Image object (None)> |
update_fields | None |
using | 'default' |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py
in _save_table
self._order = order_value
fields = meta.local_concrete_fields
if not pk_set:
fields = [f for f in fields if f is not meta.auto_field]
update_pk = meta.auto_field and not pk_set
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)…
if update_pk:
setattr(self, meta.pk.attname, result)
return updated
def _do_update(self, base_qs, using, pk_val, values, update_fields, forced_update):
"""
Variable | Value |
---|---|
cls | <class 'django_classified.models.Image'> |
fields | [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>] |
force_insert | False |
force_update | False |
meta | <Options for Image> |
non_pks | [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>] |
pk_set | False |
pk_val | None |
raw | False |
self | <Image: Image object (None)> |
update_fields | None |
update_pk | True |
updated | False |
using | 'default' |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/base.py
in _do_insert
def _do_insert(self, manager, using, fields, update_pk, raw):
"""
Do an INSERT. If update_pk is defined then this method should return
the new pk for the model.
"""
return manager._insert([self], fields=fields, return_id=update_pk,
using=using, raw=raw)…
def delete(self, using=None, keep_parents=False):
using = using or router.db_for_write(self.__class__, instance=self)
assert self.pk is not None, (
"%s object can't be deleted because its %s attribute is set to None." %
(self._meta.object_name, self._meta.pk.attname)
Variable | Value |
---|---|
fields | [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>] |
manager | <django.db.models.manager.Manager object at 0x7f91868409b0> |
raw | False |
self | <Image: Image object (None)> |
update_pk | True |
using | 'default' |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/manager.py
in manager_method
def check(self, **kwargs):
return []
@classmethod
def _get_queryset_methods(cls, queryset_class):
def create_method(name, method):
def manager_method(self, *args, **kwargs):
return getattr(self.get_queryset(), name)(*args, **kwargs)…
manager_method.__name__ = method.__name__
manager_method.__doc__ = method.__doc__
return manager_method
new_methods = {}
for name, method in inspect.getmembers(queryset_class, predicate=inspect.isfunction):
Variable | Value |
---|---|
args | ([<Image: Image object (None)>],) |
kwargs | {'fields': [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>], 'raw': False, 'return_id': True, 'using': 'default'} |
name | '_insert' |
self | <django.db.models.manager.Manager object at 0x7f91868409b0> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/query.py
in _insert
the InsertQuery class and is how Model.save() is implemented.
"""
self._for_write = True
if using is None:
using = self.db
query = sql.InsertQuery(self.model, ignore_conflicts=ignore_conflicts)
query.insert_values(fields, objs, raw=raw)
return query.get_compiler(using=using).execute_sql(return_id)…
_insert.alters_data = True
_insert.queryset_only = False
def _batched_insert(self, objs, fields, batch_size, ignore_conflicts=False):
"""
Helper method for bulk_create() to insert objs one batch at a time.
Variable | Value |
---|---|
fields | [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>] |
ignore_conflicts | False |
objs | [<Image: Image object (None)>] |
query | <django.db.models.sql.subqueries.InsertQuery object at 0x7f9186564a90> |
raw | False |
return_id | True |
self | <QuerySet [<Image: Image object (6)>, <Image: Image object (7)>, <Image: Image object (9)>, <Image: Image object (10)>, <Image: Image object (11)>, <Image: Image object (12)>]> |
using | 'default' |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in execute_sql
def execute_sql(self, return_id=False):
assert not (
return_id and len(self.query.objs) != 1 and
not self.connection.features.can_return_ids_from_bulk_insert
)
self.return_id = return_id
with self.connection.cursor() as cursor:
for sql, params in self.as_sql():…
cursor.execute(sql, params)
if not return_id:
return
if self.connection.features.can_return_ids_from_bulk_insert and len(self.query.objs) > 1:
return self.connection.ops.fetch_returned_insert_ids(cursor)
if self.connection.features.can_return_id_from_insert:
Variable | Value |
---|---|
cursor | <django.db.backends.utils.CursorDebugWrapper object at 0x7f9186594128> |
return_id | True |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7f91868487b8> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in as_sql
result = ['%s %s' % (insert_statement, qn(opts.db_table))]
fields = self.query.fields or [opts.pk]
result.append('(%s)' % ', '.join(qn(f.column) for f in fields))
if self.query.fields:
value_rows = [
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
for obj in self.query.objs…
]
else:
# An empty object.
value_rows = [[self.connection.ops.pk_default_value()] for _ in self.query.objs]
fields = [None]
Variable | Value |
---|---|
fields | [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>] |
insert_statement | 'INSERT INTO' |
opts | <Options for Image> |
qn | <bound method DatabaseOperations.quote_name of <django.db.backends.postgresql.operations.DatabaseOperations object at 0x7f91875dd320>> |
result | ['INSERT INTO "django_classified_image"', '("item_id", "file")'] |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7f91868487b8> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in <listcomp>
result = ['%s %s' % (insert_statement, qn(opts.db_table))]
fields = self.query.fields or [opts.pk]
result.append('(%s)' % ', '.join(qn(f.column) for f in fields))
if self.query.fields:
value_rows = [
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
for obj in self.query.objs…
]
else:
# An empty object.
value_rows = [[self.connection.ops.pk_default_value()] for _ in self.query.objs]
fields = [None]
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f9186594c88> |
fields | [<django.db.models.fields.related.ForeignKey: item>, <sorl.thumbnail.fields.ImageField: file>] |
obj | <Image: Image object (None)> |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7f91868487b8> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in <listcomp>
insert_statement = self.connection.ops.insert_statement(ignore_conflicts=self.query.ignore_conflicts)
result = ['%s %s' % (insert_statement, qn(opts.db_table))]
fields = self.query.fields or [opts.pk]
result.append('(%s)' % ', '.join(qn(f.column) for f in fields))
if self.query.fields:
value_rows = [
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]…
for obj in self.query.objs
]
else:
# An empty object.
value_rows = [[self.connection.ops.pk_default_value()] for _ in self.query.objs]
fields = [None]
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f9186594d68> |
field | <sorl.thumbnail.fields.ImageField: file> |
obj | <Image: Image object (None)> |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7f91868487b8> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in pre_save_val
def pre_save_val(self, field, obj):
"""
Get the given field's value off the given obj. pre_save() is used for
things like auto_now on DateTimeField. Skip it if this is a raw query.
"""
if self.query.raw:
return getattr(obj, field.attname)
return field.pre_save(obj, add=True)…
def assemble_as_sql(self, fields, value_rows):
"""
Take a sequence of N fields and a sequence of M rows of values, and
generate placeholder SQL and parameters for each field and value.
Return a pair containing:
Variable | Value |
---|---|
field | <sorl.thumbnail.fields.ImageField: file> |
obj | <Image: Image object (None)> |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7f91868487b8> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/files.py
in pre_save
return None
return str(value)
def pre_save(self, model_instance, add):
file = super().pre_save(model_instance, add)
if file and not file._committed:
# Commit the file to storage prior to saving the model
file.save(file.name, file.file, save=False)…
return file
def contribute_to_class(self, cls, name, **kwargs):
super().contribute_to_class(cls, name, **kwargs)
setattr(cls, self.name, self.descriptor_class(self))
Variable | Value |
---|---|
__class__ | <class 'django.db.models.fields.files.FileField'> |
add | True |
file | <ImageFieldFile: Picture 9.png> |
model_instance | <Image: Image object (None)> |
self | <sorl.thumbnail.fields.ImageField: file> |
/app/.heroku/python/lib/python3.7/site-packages/django/db/models/fields/files.py
in save
# In addition to the standard File API, FieldFiles have extra methods
# to further manipulate the underlying file, as well as update the
# associated model instance.
def save(self, name, content, save=True):
name = self.field.generate_filename(self.instance, name)
self.name = self.storage.save(name, content, max_length=self.field.max_length)…
setattr(self.instance, self.field.name, self.name)
self._committed = True
# Save the object because it has changed, unless save is False
if save:
self.instance.save()
Variable | Value |
---|---|
content | <InMemoryUploadedFile: Picture 9.png (image/png)> |
name | 'images/Picture_9.png' |
save | False |
self | <ImageFieldFile: Picture 9.png> |
/app/.heroku/python/lib/python3.7/site-packages/django/core/files/storage.py
in save
if name is None:
name = content.name
if not hasattr(content, 'chunks'):
content = File(content, name)
name = self.get_available_name(name, max_length=max_length)
return self._save(name, content)…
# These methods are part of the public API, with default implementations.
def get_valid_name(self, name):
"""
Return a filename, based on the provided filename, that's suitable for
Variable | Value |
---|---|
content | <InMemoryUploadedFile: Picture 9.png (image/png)> |
max_length | 100 |
name | 'images/Picture_9.png' |
self | <storages.backends.s3boto3.S3Boto3Storage object at 0x7f9186594eb8> |
/app/.heroku/python/lib/python3.7/site-packages/storages/backends/s3boto3.py
in _save
parameters.update({'ContentEncoding': encoding})
encoded_name = self._encode_name(name)
obj = self.bucket.Object(encoded_name)
if self.preload_metadata:
self._entries[encoded_name] = obj
self._save_content(obj, content, parameters=parameters)…
# Note: In boto3, after a put, last_modified is automatically reloaded
# the next time it is accessed; no need to specifically reload it.
return cleaned_name
def _save_content(self, obj, content, parameters):
# only pass backwards incompatible arguments if they vary from the default
Variable | Value |
---|---|
_type | 'image/png' |
cleaned_name | 'images/Picture_9.png' |
content | <InMemoryUploadedFile: Picture 9.png (image/png)> |
content_type | 'image/png' |
encoded_name | 'images/Picture_9.png' |
encoding | None |
name | 'images/Picture_9.png' |
obj | s3.Object(bucket_name='django-classified', key='images/Picture_9.png') |
parameters | {'ContentType': 'image/png'} |
self | <storages.backends.s3boto3.S3Boto3Storage object at 0x7f9186594eb8> |
/app/.heroku/python/lib/python3.7/site-packages/storages/backends/s3boto3.py
in _save_content
if self.encryption:
put_parameters['ServerSideEncryption'] = 'AES256'
if self.reduced_redundancy:
put_parameters['StorageClass'] = 'REDUCED_REDUNDANCY'
if self.default_acl:
put_parameters['ACL'] = self.default_acl
content.seek(0, os.SEEK_SET)
obj.upload_fileobj(content, ExtraArgs=put_parameters)…
def delete(self, name):
name = self._normalize_name(self._clean_name(name))
self.bucket.Object(self._encode_name(name)).delete()
if name in self._entries:
Variable | Value |
---|---|
content | <InMemoryUploadedFile: Picture 9.png (image/png)> |
obj | s3.Object(bucket_name='django-classified', key='images/Picture_9.png') |
parameters | {'ContentType': 'image/png'} |
put_parameters | {'ACL': 'public-read', 'ContentType': 'image/png'} |
self | <storages.backends.s3boto3.S3Boto3Storage object at 0x7f9186594eb8> |
/app/.heroku/python/lib/python3.7/site-packages/boto3/s3/inject.py
in object_upload_fileobj
:type Config: boto3.s3.transfer.TransferConfig
:param Config: The transfer configuration to be used when performing the
upload.
"""
return self.meta.client.upload_fileobj(
Fileobj=Fileobj, Bucket=self.bucket_name, Key=self.key,
ExtraArgs=ExtraArgs, Callback=Callback, Config=Config)…
def download_fileobj(self, Bucket, Key, Fileobj, ExtraArgs=None,
Callback=None, Config=None):
"""Download an object from S3 to a file-like object.
Variable | Value |
---|---|
Callback | None |
Config | None |
ExtraArgs | {'ACL': 'public-read', 'ContentType': 'image/png'} |
Fileobj | <InMemoryUploadedFile: Picture 9.png (image/png)> |
self | s3.Object(bucket_name='django-classified', key='images/Picture_9.png') |
/app/.heroku/python/lib/python3.7/site-packages/boto3/s3/inject.py
in upload_fileobj
if config is None:
config = TransferConfig()
with create_transfer_manager(self, config) as manager:
future = manager.upload(
fileobj=Fileobj, bucket=Bucket, key=Key,
extra_args=ExtraArgs, subscribers=subscribers)
return future.result()…
def bucket_upload_fileobj(self, Fileobj, Key, ExtraArgs=None,
Callback=None, Config=None):
"""Upload a file-like object to this bucket.
Variable | Value |
---|---|
Bucket | 'django-classified' |
Callback | None |
Config | None |
ExtraArgs | {'ACL': 'public-read', 'ContentType': 'image/png'} |
Fileobj | <InMemoryUploadedFile: Picture 9.png (image/png)> |
Key | 'images/Picture_9.png' |
config | <boto3.s3.transfer.TransferConfig object at 0x7f9184ec1160> |
future | <s3transfer.futures.TransferFuture object at 0x7f9184ecae48> |
manager | <s3transfer.manager.TransferManager object at 0x7f9184ec1278> |
self | <botocore.client.S3 object at 0x7f9185181518> |
subscribers | None |
/app/.heroku/python/lib/python3.7/site-packages/s3transfer/futures.py
in result
return self._coordinator.done()
def result(self):
try:
# Usually the result() method blocks until the transfer is done,
# however if a KeyboardInterrupt is raised we want want to exit
# out of this and propogate the exception.
return self._coordinator.result()…
except KeyboardInterrupt as e:
self.cancel()
raise e
def cancel(self):
self._coordinator.cancel()
Variable | Value |
---|---|
self | <s3transfer.futures.TransferFuture object at 0x7f9184ecae48> |
/app/.heroku/python/lib/python3.7/site-packages/s3transfer/futures.py
in result
# possible value integer value, which is on the scale of billions of
# years...
self._done_event.wait(MAXINT)
# Once done waiting, raise an exception if present or return the
# final result.
if self._exception:
raise self._exception…
return self._result
def cancel(self, msg='', exc_type=CancelledError):
"""Cancels the TransferFuture
:param msg: The message to attach to the cancellation
Variable | Value |
---|---|
self | TransferCoordinator(transfer_id=0) |
/app/.heroku/python/lib/python3.7/site-packages/s3transfer/tasks.py
in __call__
# the values for pending_main_kwargs that source from the return
# values from the task's depenent futures.
kwargs = self._get_all_main_kwargs()
# If the task is not done (really only if some other related
# task to the TransferFuture had failed) then execute the task's
# main() method.
if not self._transfer_coordinator.done():
return self._execute_main(kwargs)…
except Exception as e:
self._log_and_set_exception(e)
finally:
# Run any done callbacks associated to the task no matter what.
for done_callback in self._done_callbacks:
done_callback()
Variable | Value |
---|---|
kwargs | {'bucket': 'django-classified', 'client': <botocore.client.S3 object at 0x7f9185181518>, 'extra_args': {'ACL': 'public-read', 'ContentType': 'image/png'}, 'fileobj': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'key': 'images/Picture_9.png'} |
self | PutObjectTask(transfer_id=0, {'bucket': 'django-classified', 'key': 'images/Picture_9.png', 'extra_args': {'ContentType': 'image/png', 'ACL': 'public-read'}}) |
/app/.heroku/python/lib/python3.7/site-packages/s3transfer/tasks.py
in _execute_main
kwargs_to_display = self._get_kwargs_with_params_to_exclude(
kwargs, params_to_exclude)
# Log what is about to be executed.
logger.debug(
"Executing task %s with kwargs %s" % (self, kwargs_to_display)
)
return_value = self._main(**kwargs)…
# If the task is the final task, then set the TransferFuture's
# value to the return value from main().
if self._is_final:
self._transfer_coordinator.set_result(return_value)
return return_value
Variable | Value |
---|---|
kwargs | {'bucket': 'django-classified', 'client': <botocore.client.S3 object at 0x7f9185181518>, 'extra_args': {'ACL': 'public-read', 'ContentType': 'image/png'}, 'fileobj': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'key': 'images/Picture_9.png'} |
kwargs_to_display | {'bucket': 'django-classified', 'client': <botocore.client.S3 object at 0x7f9185181518>, 'extra_args': {'ACL': 'public-read', 'ContentType': 'image/png'}, 'fileobj': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'key': 'images/Picture_9.png'} |
params_to_exclude | ['data'] |
self | PutObjectTask(transfer_id=0, {'bucket': 'django-classified', 'key': 'images/Picture_9.png', 'extra_args': {'ContentType': 'image/png', 'ACL': 'public-read'}}) |
/app/.heroku/python/lib/python3.7/site-packages/s3transfer/upload.py
in _main
:param fileobj: The file to upload.
:param bucket: The name of the bucket to upload to
:param key: The name of the key to upload to
:param extra_args: A dictionary of any extra arguments that may be
used in the upload.
"""
with fileobj as body:
client.put_object(Bucket=bucket, Key=key, Body=body, **extra_args)…
class UploadPartTask(Task):
"""Task to upload a part in a multipart upload"""
def _main(self, client, fileobj, bucket, key, upload_id, part_number,
extra_args):
Variable | Value |
---|---|
body | <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0> |
bucket | 'django-classified' |
client | <botocore.client.S3 object at 0x7f9185181518> |
extra_args | {'ACL': 'public-read', 'ContentType': 'image/png'} |
fileobj | <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0> |
key | 'images/Picture_9.png' |
self | PutObjectTask(transfer_id=0, {'bucket': 'django-classified', 'key': 'images/Picture_9.png', 'extra_args': {'ContentType': 'image/png', 'ACL': 'public-read'}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'ACL': 'public-read', 'Body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'Bucket': 'django-classified', 'ContentType': 'image/png', 'Key': 'images/Picture_9.png'} |
operation_name | 'PutObject' |
py_operation_name | 'put_object' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'ACL': 'public-read', 'Body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'Bucket': 'django-classified', 'ContentType': 'image/png', 'Key': 'images/Picture_9.png'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=PutObject) |
operation_name | 'PutObject' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=PutObject) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=PutObject) |
request_dict | {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=PutObject) |
request | <AWSPreparedRequest stream_output=False, method=PUT, url=https://storage.pzbz.ru/django-classified/images/Picture_9.png, headers={'Content-Type': b'image/png', 'x-amz-acl': b'public-read', 'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'Content-MD5': b'bypThCRHAA8rexZa0aMjaQ==', 'Expect': b'100-continue', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'UNSIGNED-PAYLOAD', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=content-md5;content-type;host;x-amz-acl;x-amz-content-sha256;x-amz-date, Signature=5add06218906670fe8fbb5728fd8e00130946b09b3c3313e2acdf30a8d34288d', 'Content-Length': '350398'}> |
request_dict | {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.PutObject' |
operation_model | OperationModel(name=PutObject) |
request_dict | {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.PutObject' |
event_name | 'needs-retry.s3.PutObject' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=PutObject), 'request_dict': {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.PutObject' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.PutObject', 'operation': OperationModel(name=PutObject), 'request_dict': {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.PutObject' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.PutObject', 'operation': OperationModel(name=PutObject), 'request_dict': {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.PutObject'} |
operation | OperationModel(name=PutObject) |
request_dict | {'body': <s3transfer.utils.ReadFileChunk object at 0x7f9184f990f0>, 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': True, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'Content-MD5': 'bypThCRHAA8rexZa0aMjaQ==', 'Content-Type': 'image/png', 'Expect': '100-continue', 'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource', 'x-amz-acl': 'public-read'}, 'method': 'PUT', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'url_path': '/django-classified/images/Picture_9.png'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f99ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a2fb8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified/images/Picture_9.png', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax', 'transfer-encoding': 'chunked', 'vary': 'Accept-Encoding'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5a888eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184fc3cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ac8f1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f228d0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ae936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b2989ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f28a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b49d4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b7a13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f32a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5b9a56ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cfd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bba94ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3cc50>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5bdaebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42ef0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c0b23ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152408Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=f668ee09708c9ff696f7c13996d9e25ec5aa2bd7358b236be6829ae336ed4bf9'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:08 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152408Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 15:24:08 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c2b68ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:08 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d960ee545ca284478d49e95b9913bc37c1580138648; ' 'expires=Wed, 26-Feb-20 ' '15:24:08 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c5ba9ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f42d68>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c7bebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58828>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5c9c34ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5fda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ccc89ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e5f9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5cecc7ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d0d0bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e67c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d3d53ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184f3c5f8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d5d90ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e58a20>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5d8df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5dbe5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e79eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5deeaaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e82908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e1ee2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8ae80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e4f4eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8aac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5e7fabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8a470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ea821ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9184e8add8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5ee893ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f08d5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bd4cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f3910ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bdcf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f5961ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be5cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5f89a6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182be59e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5fba5fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bedcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb5feaabea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bed9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb601af6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb604b52ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bf8ba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb608baaea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60abd8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c03e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb60dc13ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182c0b898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb611c83ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb614cc8ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b92748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb616cfbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9ada0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb618d3bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b9a9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb61cd8aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb620df5ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:09 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182ba3c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 15:24:09 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb623e75ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:09 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=de11798bee91672c9fe7874d5c67ea11d1580138649; ' 'expires=Wed, 26-Feb-20 ' '15:24:09 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152409Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=b8f7f825fa6f9f4cd74676f4ac2f5630f792b99464c2fb592788ddea1a1cb3b1'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152409Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb628ef4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182babf98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb62dfa1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4f28>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb630fe4ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bb4eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb633823ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bbe908>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63586fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5e80>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6398cfea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5ac8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb63e93dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5470>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6449dbea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bc5da0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb648a4aea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59fd0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64ca96ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b59cf8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb64fae2ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b61f98>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb655b4dea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b68cc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb662cebea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b689e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb666d59ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b6fcc0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66add3ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182bcf710>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb66ee32ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7af60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb672e87ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b7aba8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb677f07ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82eb8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb679f47ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b82e48>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67bf8eea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b8a898>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb67f80bea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12b00>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb682869ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b12748>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6868c1ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:10 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152410Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=bc4ea20d115c51da5390abe2f7110b0bc30e76c9322f77da5390fa0eeac089e2'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:10 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152410Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1eda0>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 15:24:10 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68b936ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=df1a4cad1ca2ef99b67a270a10c86d9aa1580138650; ' 'expires=Wed, 26-Feb-20 ' '15:24:10 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152411Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e10f9af4d4ea0db6017fe635062b74f830994c1da3a953341bd63f0891fc5d6b'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b1e9e8>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb68f99fea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152411Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e10f9af4d4ea0db6017fe635062b74f830994c1da3a953341bd63f0891fc5d6b'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26f60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb6919d6ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152411Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e10f9af4d4ea0db6017fe635062b74f830994c1da3a953341bd63f0891fc5d6b'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b26c88>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb693a16ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):…
attempts += 1
# If there is a stream associated with the request, we need
# to reset it before attempting to send the request again.
# This will ensure that we resend the entire contents of the
# body.
request.reset_stream()
Variable | Value |
---|---|
attempts | 1 |
context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
exception | None |
operation_model | OperationModel(name=HeadBucket) |
request | <AWSPreparedRequest stream_output=False, method=HEAD, url=https://storage.pzbz.ru/django-classified, headers={'User-Agent': b'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource', 'X-Amz-Date': b'20200127T152411Z', 'X-Amz-Content-SHA256': b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 'Authorization': b'AWS4-HMAC-SHA256 Credential=FaRAkQZn7M6j70Ff/20200127/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=e10f9af4d4ea0db6017fe635062b74f830994c1da3a953341bd63f0891fc5d6b'}> |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
success_response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _needs_retry
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'needs-retry.%s.%s' % (
service_id,
operation_model.name)
responses = self._event_emitter.emit(
event_name, response=response, endpoint=self,
operation=operation_model, attempts=attempts,
caught_exception=caught_exception, request_dict=request_dict)…
handler_response = first_non_none_response(responses)
if handler_response is None:
return False
else:
# Request needs to be retried, and we need to sleep
# for the specified number of times.
Variable | Value |
---|---|
attempts | 1 |
caught_exception | None |
event_name | 'needs-retry.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'needs-retry.s3.HeadBucket' |
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'needs-retry.s3.HeadBucket' |
handler | <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>> |
handlers_to_call | deque([<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, <bound method S3RegionRedirector.redirect_from_error of <botocore.utils.S3RegionRedirector object at 0x7f91851522b0>>]) |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket', 'operation': OperationModel(name=HeadBucket), 'request_dict': {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 ' 'Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'}, 'response': (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 ' '15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, ' '26-Feb-20 ' '15:24:11 ' 'GMT; ' 'path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; ' 'SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}})} |
response | None |
responses | [(<botocore.retryhandler.RetryHandler object at 0x7f9185152208>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in redirect_from_error
if not any([is_special_head_object, is_wrong_signing_region,
is_permanent_redirect, is_special_head_bucket,
is_redirect_status]):
return
bucket = request_dict['context']['signing']['bucket']
client_region = request_dict['context'].get('client_region')
new_region = self.get_bucket_region(bucket, response)…
if new_region is None:
logger.debug(
"S3 client configured for region %s but the bucket %s is not "
"in that region and the proper region could not be "
"automatically determined." % (client_region, bucket))
Variable | Value |
---|---|
bucket | 'django-classified' |
client_region | 'us-east-1' |
error | {'Code': '301', 'Message': 'Moved Permanently'} |
error_code | '301' |
is_permanent_redirect | False |
is_redirect_status | True |
is_special_head_bucket | False |
is_special_head_object | False |
is_wrong_signing_region | False |
kwargs | {'attempts': 1, 'caught_exception': None, 'endpoint': s3(https://storage.pzbz.ru), 'event_name': 'needs-retry.s3.HeadBucket'} |
operation | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_metadata | {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/utils.py
in get_bucket_region
# Next, check the error body
region = service_response.get('Error', {}).get('Region', None)
if region is not None:
return region
# Finally, HEAD the bucket. No other choice sadly.
try:
response = self._client.head_bucket(Bucket=bucket)…
headers = response['ResponseMetadata']['HTTPHeaders']
except ClientError as e:
headers = e.response['ResponseMetadata']['HTTPHeaders']
region = headers.get('x-amz-bucket-region', None)
return region
Variable | Value |
---|---|
bucket | 'django-classified' |
region | None |
response | (<botocore.awsrequest.AWSResponse object at 0x7f9182b2cf60>, {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}}) |
response_headers | {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 15:24:11 GMT; path=/; domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'} |
self | <botocore.utils.S3RegionRedirector object at 0x7f91851522b0> |
service_response | {'Error': {'Code': '301', 'Message': 'Moved Permanently'}, 'ResponseMetadata': {'HTTPHeaders': {'cf-cache-status': 'DYNAMIC', 'cf-ray': '55bbbb696a66ea4d-IAD', 'connection': 'keep-alive', 'content-type': 'text/html', 'date': 'Mon, 27 Jan 2020 15:24:11 GMT', 'expect-ct': 'max-age=604800, ' 'report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'location': 'https://storage.pzbz.ru/django-classified', 'server': 'cloudflare', 'set-cookie': '__cfduid=d0b4e84b46e31717d9b52c3e6bf84c7751580138651; ' 'expires=Wed, 26-Feb-20 ' '15:24:11 GMT; path=/; ' 'domain=.pzbz.ru; ' 'HttpOnly; SameSite=Lax'}, 'HTTPStatusCode': 301, 'HostId': '', 'RequestId': ''}} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _api_call
# We're accepting *args so that we can give a more helpful
# error message than TypeError: _api_call takes exactly
# 1 argument.
if args:
raise TypeError(
"%s() only accepts keyword arguments." % py_operation_name)
# The "self" in this scope is referring to the BaseClient.
return self._make_api_call(operation_name, kwargs)…
_api_call.__name__ = str(py_operation_name)
# Add the docstring to the client method
operation_model = service_model.operation_model(operation_name)
docstring = ClientMethodDocstring(
Variable | Value |
---|---|
args | () |
kwargs | {'Bucket': 'django-classified'} |
operation_name | 'HeadBucket' |
py_operation_name | 'head_bucket' |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_api_call
model=operation_model, params=request_dict,
request_signer=self._request_signer, context=request_context)
if event_response is not None:
http, parsed_response = event_response
else:
http, parsed_response = self._make_request(
operation_model, request_dict, request_context)…
self.meta.events.emit(
'after-call.{service_id}.{operation_name}'.format(
service_id=service_id,
operation_name=operation_name),
http_response=http, parsed=parsed_response,
Variable | Value |
---|---|
api_params | {'Bucket': 'django-classified'} |
event_response | None |
handler | <function inject_api_version_header_if_needed at 0x7f9185397730> |
operation_model | OperationModel(name=HeadBucket) |
operation_name | 'HeadBucket' |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
service_id | 's3' |
service_name | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/client.py
in _make_request
error_class = self.exceptions.from_code(error_code)
raise error_class(parsed_response, operation_name)
else:
return parsed_response
def _make_request(self, operation_model, request_dict, request_context):
try:
return self._endpoint.make_request(operation_model, request_dict)…
except Exception as e:
self.meta.events.emit(
'after-call-error.{service_id}.{operation_name}'.format(
service_id=self._service_model.service_id.hyphenize(),
operation_name=operation_model.name),
exception=e, context=request_context
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_context | {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'} |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | <botocore.client.S3 object at 0x7f9185181518> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in make_request
def __repr__(self):
return '%s(%s)' % (self._endpoint_prefix, self.host)
def make_request(self, operation_model, request_dict):
logger.debug("Making request for %s with params: %s",
operation_model, request_dict)
return self._send_request(request_dict, operation_model)…
def create_request(self, params, operation_model=None):
request = create_request_object(params)
if operation_model:
request.stream_output = any([
operation_model.has_streaming_output,
Variable | Value |
---|---|
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in _send_request
def prepare_request(self, request):
self._encode_headers(request.headers)
return request.prepare()
def _send_request(self, request_dict, operation_model):
attempts = 1
request = self.create_request(request_dict, operation_model)…
context = request_dict['context']
success_response, exception = self._get_response(
request, operation_model, context)
while self._needs_retry(attempts, operation_model, request_dict,
success_response, exception):
attempts += 1
Variable | Value |
---|---|
attempts | 1 |
operation_model | OperationModel(name=HeadBucket) |
request_dict | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
self | s3(https://storage.pzbz.ru) |
/app/.heroku/python/lib/python3.7/site-packages/botocore/endpoint.py
in create_request
operation_model.has_event_stream_output
])
service_id = operation_model.service_model.service_id.hyphenize()
event_name = 'request-created.{service_id}.{op_name}'.format(
service_id=service_id,
op_name=operation_model.name)
self._event_emitter.emit(event_name, request=request,
operation_name=operation_model.name)…
prepared_request = self.prepare_request(request)
return prepared_request
def _encode_headers(self, headers):
# In place encoding of headers to utf-8 if they are unicode.
for key, value in headers.items():
Variable | Value |
---|---|
event_name | 'request-created.s3.HeadBucket' |
operation_model | OperationModel(name=HeadBucket) |
params | {'body': b'', 'context': {'auth_type': None, 'client_config': <botocore.config.Config object at 0x7f9185181f98>, 'client_region': 'us-east-1', 'has_streaming_input': False, 'signing': {'bucket': 'django-classified'}, 'timestamp': '20200127T152411Z'}, 'headers': {'User-Agent': 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws ' 'Botocore/1.12.234 Resource'}, 'method': 'HEAD', 'query_string': {}, 'url': 'https://storage.pzbz.ru/django-classified', 'url_path': '/django-classified'} |
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | s3(https://storage.pzbz.ru) |
service_id | 's3' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
self._event_aliases = event_aliases
if event_aliases is None:
self._event_aliases = EVENT_ALIASES
self._emitter = event_emitter
def emit(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit(aliased_event_name, **kwargs)…
def emit_until_response(self, event_name, **kwargs):
aliased_event_name = self._alias_event_name(event_name)
return self._emitter.emit_until_response(aliased_event_name, **kwargs)
def register(self, event_name, handler, unique_id=None,
Variable | Value |
---|---|
aliased_event_name | 'request-created.s3.HeadBucket' |
event_name | 'request-created.s3.HeadBucket' |
kwargs | {'operation_name': 'HeadBucket', 'request': <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98>} |
self | <botocore.hooks.EventAliaser object at 0x7f9185181668> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in emit
>>> responses = emitter.emit(
... 'my-event.service.operation', arg1='one', arg2='two')
:rtype: list
:return: List of (handler, response) tuples from all processed
handlers.
"""
return self._emit(event_name, kwargs)…
def emit_until_response(self, event_name, **kwargs):
"""
Emit an event by name with arguments passed as keyword args,
until the first non-``None`` response is received. This
method prevents subsequent handlers from being invoked.
Variable | Value |
---|---|
event_name | 'request-created.s3.HeadBucket' |
kwargs | {'event_name': 'request-created.s3.HeadBucket', 'operation_name': 'HeadBucket', 'request': <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98>} |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/hooks.py
in _emit
# no handlers to call. This is the common case where
# for the majority of signals, nothing is listening.
return []
kwargs['event_name'] = event_name
responses = []
for handler in handlers_to_call:
logger.debug('Event %s: calling handler %s', event_name, handler)
response = handler(**kwargs)…
responses.append((handler, response))
if stop_on_response and response is not None:
return responses
return responses
def emit(self, event_name, **kwargs):
Variable | Value |
---|---|
event_name | 'request-created.s3.HeadBucket' |
handler | <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7f9185181780>> |
handlers_to_call | deque([<function signal_not_transferring at 0x7f91851360d0>, <bound method RequestSigner.handler of <botocore.signers.RequestSigner object at 0x7f9185181780>>, <function signal_transferring at 0x7f91851361e0>]) |
kwargs | {'event_name': 'request-created.s3.HeadBucket', 'operation_name': 'HeadBucket', 'request': <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98>} |
response | None |
responses | [(<function signal_not_transferring at 0x7f91851360d0>, None)] |
self | <botocore.hooks.HierarchicalEmitter object at 0x7f9185181550> |
stop_on_response | False |
/app/.heroku/python/lib/python3.7/site-packages/botocore/signers.py
in handler
return self._signing_name
def handler(self, operation_name=None, request=None, **kwargs):
# This is typically hooked up to the "request-created" event
# from a client's event emitter. When a new request is created
# this method is invoked to sign the request.
# Don't call this method directly.
return self.sign(operation_name, request)…
def sign(self, operation_name, request, region_name=None,
signing_type='standard', expires_in=None, signing_name=None):
"""Sign a request before it goes out over the wire.
:type operation_name: string
Variable | Value |
---|---|
kwargs | {'event_name': 'request-created.s3.HeadBucket'} |
operation_name | 'HeadBucket' |
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.signers.RequestSigner object at 0x7f9185181780> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/signers.py
in sign
except UnknownSignatureVersionError as e:
if signing_type != 'standard':
raise UnsupportedSignatureVersionError(
signature_version=signature_version)
else:
raise e
auth.add_auth(request)…
def _choose_signer(self, operation_name, signing_type, context):
"""
Allow setting the signature version via the choose-signer event.
A value of `botocore.UNSIGNED` means no signing will be performed.
Variable | Value |
---|---|
auth | <botocore.auth.S3SigV4Auth object at 0x7f9182b36630> |
expires_in | None |
kwargs | {'region_name': 'us-east-1', 'signature_version': 's3v4', 'signing_name': 's3'} |
operation_name | 'HeadBucket' |
region_name | 'us-east-1' |
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.signers.RequestSigner object at 0x7f9185181780> |
signature_version | 's3v4' |
signing_name | 's3' |
signing_type | 'standard' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/auth.py
in add_auth
def add_auth(self, request):
# If we ever decide to share auth sessions, this could potentially be
# a source of concurrency bugs.
signing_context = request.context.get('signing', {})
self._region_name = signing_context.get(
'region', self._default_region_name)
super(S3SigV4Auth, self).add_auth(request)…
def _modify_request_before_signing(self, request):
super(S3SigV4Auth, self)._modify_request_before_signing(request)
if 'X-Amz-Content-SHA256' in request.headers:
del request.headers['X-Amz-Content-SHA256']
Variable | Value |
---|---|
__class__ | <class 'botocore.auth.S3SigV4Auth'> |
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.auth.S3SigV4Auth object at 0x7f9182b36630> |
signing_context | {'bucket': 'django-classified'} |
/app/.heroku/python/lib/python3.7/site-packages/botocore/auth.py
in add_auth
def add_auth(self, request):
if self.credentials is None:
raise NoCredentialsError
datetime_now = datetime.datetime.utcnow()
request.context['timestamp'] = datetime_now.strftime(SIGV4_TIMESTAMP)
# This could be a retry. Make sure the previous
# authorization header is removed first.
self._modify_request_before_signing(request)…
canonical_request = self.canonical_request(request)
logger.debug("Calculating signature using v4 auth.")
logger.debug('CanonicalRequest:\n%s', canonical_request)
string_to_sign = self.string_to_sign(request, canonical_request)
logger.debug('StringToSign:\n%s', string_to_sign)
signature = self.signature(string_to_sign, request)
Variable | Value |
---|---|
datetime_now | datetime.datetime(2020, 1, 27, 15, 24, 11, 142010) |
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.auth.S3SigV4Auth object at 0x7f9182b36630> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/auth.py
in _modify_request_before_signing
super(S3SigV4Auth, self).add_auth(request)
def _modify_request_before_signing(self, request):
super(S3SigV4Auth, self)._modify_request_before_signing(request)
if 'X-Amz-Content-SHA256' in request.headers:
del request.headers['X-Amz-Content-SHA256']
request.headers['X-Amz-Content-SHA256'] = self.payload(request)…
def _should_sha256_sign_payload(self, request):
# S3 allows optional body signing, so to minimize the performance
# impact, we opt to not SHA256 sign the body on streaming uploads,
# provided that we're on https.
client_config = request.context.get('client_config')
Variable | Value |
---|---|
__class__ | <class 'botocore.auth.S3SigV4Auth'> |
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.auth.S3SigV4Auth object at 0x7f9182b36630> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/auth.py
in payload
return ';'.join(l)
def payload(self, request):
if not self._should_sha256_sign_payload(request):
# When payload signing is disabled, we use this static string in
# place of the payload checksum.
return UNSIGNED_PAYLOAD
request_body = request.body…
if request_body and hasattr(request_body, 'seek'):
position = request_body.tell()
read_chunksize = functools.partial(request_body.read,
PAYLOAD_BUFFER)
checksum = sha256()
for chunk in iter(read_chunksize, b''):
Variable | Value |
---|---|
request | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.auth.S3SigV4Auth object at 0x7f9182b36630> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/awsrequest.py
in body
def prepare(self):
"""Constructs a :class:`AWSPreparedRequest <AWSPreparedRequest>`."""
return self._request_preparer.prepare(self)
@property
def body(self):
body = self.prepare().body…
if isinstance(body, six.text_type):
body = body.encode('utf-8')
return body
class AWSPreparedRequest(object):
Variable | Value |
---|---|
self | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/awsrequest.py
in prepare
# of the information that is inside of ``context`` is directly
# sent over the wire; the information is only used to assist in
# creating what is sent over the wire.
self.context = {}
def prepare(self):
"""Constructs a :class:`AWSPreparedRequest <AWSPreparedRequest>`."""
return self._request_preparer.prepare(self)…
@property
def body(self):
body = self.prepare().body
if isinstance(body, six.text_type):
body = body.encode('utf-8')
Variable | Value |
---|---|
self | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
/app/.heroku/python/lib/python3.7/site-packages/botocore/awsrequest.py
in prepare
This class does not prepare the method, auth or cookies.
"""
def prepare(self, original):
method = original.method
url = self._prepare_url(original)
body = self._prepare_body(original)
headers = self._prepare_headers(original, body)…
stream_output = original.stream_output
return AWSPreparedRequest(method, url, headers, body, stream_output)
def _prepare_url(self, original):
url = original.url
Variable | Value |
---|---|
body | None |
method | 'HEAD' |
original | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
self | <botocore.awsrequest.AWSRequestPreparer object at 0x7f9182b365c0> |
url | 'https://storage.pzbz.ru/django-classified' |
/app/.heroku/python/lib/python3.7/site-packages/botocore/awsrequest.py
in _prepare_headers
url = original.url
if original.params:
params = urlencode(list(original.params.items()), doseq=True)
url = '%s?%s' % (url, params)
return url
def _prepare_headers(self, original, prepared_body=None):
headers = HeadersDict(original.headers.items())…
# If the transfer encoding or content length is already set, use that
if 'Transfer-Encoding' in headers or 'Content-Length' in headers:
return headers
# Ensure we set the content length when it is expected
Variable | Value |
---|---|
original | <botocore.awsrequest.AWSRequest object at 0x7f9182b2cf98> |
prepared_body | None |
self | <botocore.awsrequest.AWSRequestPreparer object at 0x7f9182b365c0> |
/app/.heroku/python/lib/python3.7/email/message.py
in items
def items(self):
"""Get all the message's header fields and values.
These will be sorted in the order they appeared in the original
message, or were added to the message, and may contain duplicates.
Any fields deleted and re-inserted are always appended to the header
list.
"""…
return [(k, self.policy.header_fetch_parse(k, v))
for k, v in self._headers]
def get(self, name, failobj=None):
"""Get a header value.
Variable | Value |
---|---|
self | <botocore.compat.HTTPHeaders object at 0x7f9182b365f8> |
/app/.heroku/python/lib/python3.7/email/message.py
in <listcomp>
def items(self):
"""Get all the message's header fields and values.
These will be sorted in the order they appeared in the original
message, or were added to the message, and may contain duplicates.
Any fields deleted and re-inserted are always appended to the header
list.
"""…
return [(k, self.policy.header_fetch_parse(k, v))
for k, v in self._headers]
def get(self, name, failobj=None):
"""Get a header value.
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f9182b366a0> |
k | 'User-Agent' |
self | <botocore.compat.HTTPHeaders object at 0x7f9182b365f8> |
v | 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource' |
/app/.heroku/python/lib/python3.7/email/_policybase.py
in header_fetch_parse
return (name, value)
def header_fetch_parse(self, name, value):
"""+
If the value contains binary data, it is converted into a Header object
using the unknown-8bit charset. Otherwise it is returned unmodified.
"""
return self._sanitize_header(name, value)…
def fold(self, name, value):
"""+
Headers are folded using the Header folding algorithm, which preserves
existing line breaks in the value, and wraps each resulting line to the
max_line_length. Non-ASCII binary data are CTE encoded using the
Variable | Value |
---|---|
name | 'User-Agent' |
self | Compat32() |
value | 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource' |
/app/.heroku/python/lib/python3.7/email/_policybase.py
in _sanitize_header
def _sanitize_header(self, name, value):
# If the header value contains surrogates, return a Header using
# the unknown-8bit charset to encode the bytes as encoded words.
if not isinstance(value, str):
# Assume it is already a header object
return value
if _has_surrogates(value):…
return header.Header(value, charset=_charset.UNKNOWN8BIT,
header_name=name)
else:
return value
def header_source_parse(self, sourcelines):
Variable | Value |
---|---|
name | 'User-Agent' |
self | Compat32() |
value | 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource' |
/app/.heroku/python/lib/python3.7/email/utils.py
in _has_surrogates
def _has_surrogates(s):
"""Return True if s contains surrogate-escaped binary data."""
# This check is based on the fact that unless there are surrogates, utf8
# (Python's default encoding) can encode any string. This is the fastest
# way to check for surrogates, see issue 11454 for timings.
try:
s.encode()…
return False
except UnicodeEncodeError:
return True
# How to deal with a string containing bytes before handing it to the
# application through the 'normal' interface.
Variable | Value |
---|---|
s | 'Boto3/1.9.234 Python/3.7.3 Linux/4.4.0-1057-aws Botocore/1.12.234 Resource' |
clive
No GET data
Variable | Value |
---|---|
image_set-TOTAL_FORMS | '3' |
image_set-INITIAL_FORMS | '0' |
image_set-MIN_NUM_FORMS | '0' |
image_set-MAX_NUM_FORMS | '1000' |
csrfmiddlewaretoken | '5zujtwEfox0TEO2y5MCA9mgjkx55CEp3s0UOrgeMTDSB3PLmxtOGTOwPZ7DYYZXe' |
area | '1' |
group | '75' |
title | '3,999 bass guitars for sale' |
description | ('These are the best bass guitars you will ever find. Uh, well there is one ' 'out there up to this standard too.') |
price | '399.90' |
is_active | 'on' |
image_set-0-id | '' |
image_set-0-item | '' |
image_set-1-id | '' |
image_set-1-item | '' |
image_set-1-file | '' |
image_set-2-id | '' |
image_set-2-item | '' |
image_set-2-file | '' |
Variable | Value |
---|---|
image_set-0-file | <InMemoryUploadedFile: Picture 9.png (image/png)> |
Variable | Value |
---|---|
csrftoken | 'FoVSKYAqmEE7d0JuPN7Wj0iJg3p3bqMl2PlnIIaXRKwPC1sihuj23syfVDXWxLkw' |
sessionid | 'e5hhr1d8dx391bx34y9tna6dh2rjvqht' |
Variable | Value |
---|---|
CONTENT_LENGTH | '353241' |
CONTENT_TYPE | ('multipart/form-data; ' 'boundary=---------------------------126812126716864216411199347181') |
CSRF_COOKIE | 'FoVSKYAqmEE7d0JuPN7Wj0iJg3p3bqMl2PlnIIaXRKwPC1sihuj23syfVDXWxLkw' |
HTTP_ACCEPT | 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' |
HTTP_ACCEPT_ENCODING | 'gzip, deflate, br' |
HTTP_ACCEPT_LANGUAGE | 'en-US,en;q=0.5' |
HTTP_CONNECTION | 'close' |
HTTP_CONNECT_TIME | '1' |
HTTP_COOKIE | ('csrftoken=FoVSKYAqmEE7d0JuPN7Wj0iJg3p3bqMl2PlnIIaXRKwPC1sihuj23syfVDXWxLkw; ' 'sessionid=e5hhr1d8dx391bx34y9tna6dh2rjvqht') |
HTTP_DNT | '1' |
HTTP_HOST | 'django-classified.herokuapp.com' |
HTTP_REFERER | 'https://django-classified.herokuapp.com/new/' |
HTTP_TOTAL_ROUTE_TIME | '0' |
HTTP_USER_AGENT | ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 ' 'Firefox/68.0') |
HTTP_VIA | '1.1 vegur' |
HTTP_X_FORWARDED_FOR | '81.174.145.226' |
HTTP_X_FORWARDED_PORT | '443' |
HTTP_X_FORWARDED_PROTO | 'https' |
HTTP_X_REQUEST_ID | '28905d7e-b070-492f-8876-2ef8f4ed77ed' |
HTTP_X_REQUEST_START | '1580138646555' |
PATH_INFO | '/new/' |
QUERY_STRING | '' |
RAW_URI | '/new/' |
REMOTE_ADDR | '10.182.117.232' |
REMOTE_PORT | '24449' |
REQUEST_METHOD | 'POST' |
SCRIPT_NAME | '' |
SERVER_NAME | '0.0.0.0' |
SERVER_PORT | '30648' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'gunicorn/20.0.4' |
gunicorn.socket | <socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.19.70.70', 30648), raddr=('10.182.117.232', 24449)> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f9186ec5e10> |
wsgi.file_wrapper | '' |
wsgi.input | <gunicorn.http.body.Body object at 0x7f91867ab8d0> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
project.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | (('Demo Classified Admin', 's.lyapustin@gmail.com'),) |
ALLOWED_HOSTS | ['127.0.0.1', '.herokuapp.com', 'classified.pzbz.ru'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ('social_core.backends.email.EmailAuth', 'social_core.backends.facebook.FacebookOAuth2', 'django.contrib.auth.backends.ModelBackend') |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
AWS_ACCESS_KEY_ID | '********************' |
AWS_DEFAULT_ACL | 'public-read' |
AWS_QUERYSTRING_AUTH | False |
AWS_S3_ENDPOINT_URL | 'https://storage.pzbz.ru' |
AWS_SECRET_ACCESS_KEY | '********************' |
AWS_STORAGE_BUCKET_NAME | 'django-classified' |
BASE_DIR | '/app' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': ''}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | 'Lax' |
CSRF_COOKIE_SECURE | False |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | [] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql', 'HOST': 'ec2-54-225-76-136.compute-1.amazonaws.com', 'NAME': 'dfm5mio2m7ldbh', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': 5432, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'rftlyvwciqxqjw'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y'] |
DATE_FORMAT | 'N j, Y' |
DATE_INPUT_FORMATS | ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] |
DCF_CURRENCY | 'GBP' |
DCF_DISPLAY_EMPTY_GROUPS | True |
DCF_SITE_NAME | 'Django Classified Demo' |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_CONTENT_TYPE | 'text/html' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'storages.backends.s3boto3.S3Boto3Storage' |
DEFAULT_FROM_EMAIL | 'classified@pzbz.ru' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_FILE_PATH | '' |
EMAIL_HOST | 'smtp.yandex.com' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | 'classified@pzbz.ru' |
EMAIL_PORT | 465 |
EMAIL_SSL_CERTFILE | None |
EMAIL_SSL_KEYFILE | '********************' |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
EMAIL_TIMEOUT | None |
EMAIL_USE_LOCALTIME | False |
EMAIL_USE_SSL | True |
EMAIL_USE_TLS | False |
FILE_CHARSET | 'utf-8' |
FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
FILE_UPLOAD_PERMISSIONS | None |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
GOOGLE_ANALYTICS_PROPERTY_ID | 'UA-568125-31' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.humanize', 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.sitemaps', 'django.contrib.sites', 'django.contrib.staticfiles', 'bootstrapform', 'sorl.thumbnail', 'django_classified', 'social_django', 'storages', 'demo'] |
INTERNAL_IPS | [] |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'fa', 'ur'] |
LANGUAGE_CODE | 'en-us' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LOCALE_PATHS | [] |
LOGGING | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/' |
LOGIN_URL | '/login/' |
LOGOUT_REDIRECT_URL | '/' |
MANAGERS | (('Demo Classified Admin', 's.lyapustin@gmail.com'),) |
MEDIA_ROOT | '/app/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ('whitenoise.middleware.WhiteNoiseMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'project.urls' |
SECRET_KEY | '********************' |
SECURE_BROWSER_XSS_FILTER | False |
SECURE_CONTENT_TYPE_NOSNIFF | False |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | False |
SERVER_EMAIL | 'root@localhost' |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_AGE | 1209600 |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_HTTPONLY | True |
SESSION_COOKIE_NAME | 'sessionid' |
SESSION_COOKIE_PATH | '/' |
SESSION_COOKIE_SAMESITE | 'Lax' |
SESSION_COOKIE_SECURE | False |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_FILE_PATH | None |
SESSION_SAVE_EVERY_REQUEST | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | 'project.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
SITE_ID | 1 |
SOCIAL_AUTH_EMAIL_FORM_HTML | 'demo/email_signup.html' |
SOCIAL_AUTH_EMAIL_VALIDATION_FUNCTION | 'demo.mail.send_validation' |
SOCIAL_AUTH_EMAIL_VALIDATION_URL | '/email-sent/' |
SOCIAL_AUTH_FACEBOOK_KEY | '********************' |
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS | {'fields': 'id, name, email'} |
SOCIAL_AUTH_FACEBOOK_SCOPE | ['email'] |
SOCIAL_AUTH_FACEBOOK_SECRET | '********************' |
SOCIAL_AUTH_PIPELINE | ('social_core.pipeline.social_auth.social_details', 'social_core.pipeline.social_auth.social_uid', 'social_core.pipeline.social_auth.auth_allowed', 'social_core.pipeline.social_auth.social_user', 'social_core.pipeline.user.get_username', 'social_core.pipeline.mail.mail_validation', 'social_core.pipeline.user.create_user', 'social_core.pipeline.social_auth.associate_user', 'social_core.pipeline.debug.debug', 'social_core.pipeline.social_auth.load_extra_data', 'social_core.pipeline.user.user_details', 'social_core.pipeline.debug.debug') |
STATICFILES_DIRS | () |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
STATICFILES_STORAGE | 'whitenoise.storage.CompressedManifestStaticFilesStorage' |
STATIC_ROOT | '/app/static' |
STATIC_URL | '/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/app/templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'social_django.context_processors.backends', 'social_django.context_processors.login_redirect', 'django_classified.context_processors.common_values'], 'debug': True}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'UTC' |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | None |
X_FRAME_OPTIONS | 'SAMEORIGIN' |
YEAR_MONTH_FORMAT | 'F Y' |
You're seeing this error because you have DEBUG = True
in your
Django settings file. Change that to False
, and Django will
display a standard page generated by the handler for this status code.