Coder Social home page Coder Social logo

pmclanahan / django-celery-email Goto Github PK

View Code? Open in Web Editor NEW
473.0 18.0 108.0 121 KB

A Django email backend that uses a celery task for sending the email.

License: BSD 3-Clause "New" or "Revised" License

Python 99.38% Shell 0.62%
python django celery

django-celery-email's Introduction

django-celery-email - A Celery-backed Django Email Backend

image

image

A Django email backend that uses a Celery queue for out-of-band sending of the messages.

Warning

This version requires the following versions:

  • Python >= 3.7
  • Django 2.2, 3.0, 3.1, 3.2
  • Celery >= 4.0

Using django-celery-email

To enable django-celery-email for your project you need to add djcelery_email to INSTALLED_APPS:

INSTALLED_APPS += ("djcelery_email",)

You must then set django-celery-email as your EMAIL_BACKEND:

EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'

By default django-celery-email will use Django's builtin SMTP email backend for the actual sending of the mail. If you'd like to use another backend, you may set it in CELERY_EMAIL_BACKEND just like you would normally have set EMAIL_BACKEND before you were using Celery. In fact, the normal installation procedure will most likely be to get your email working using only Django, then change EMAIL_BACKEND to CELERY_EMAIL_BACKEND, and then add the new EMAIL_BACKEND setting from above.

Mass email are sent in chunks of size CELERY_EMAIL_CHUNK_SIZE (defaults to 10).

If you need to set any of the settings (attributes) you'd normally be able to set on a Celery Task class had you written it yourself, you may specify them in a dict in the CELERY_EMAIL_TASK_CONFIG setting:

CELERY_EMAIL_TASK_CONFIG = {
    'queue' : 'email',
    'rate_limit' : '50/m',  # * CELERY_EMAIL_CHUNK_SIZE (default: 10)
    ...
}

There are some default settings. Unless you specify otherwise, the equivalent of the following settings will apply:

CELERY_EMAIL_TASK_CONFIG = {
    'name': 'djcelery_email_send',
    'ignore_result': True,
}

After this setup is complete, and you have a working Celery install, sending email will work exactly like it did before, except that the sending will be handled by your Celery workers:

from django.core import mail

emails = (
    ('Hey Man', "I'm The Dude! So that's what you call me.", '[email protected]', ['[email protected]']),
    ('Dammit Walter', "Let's go bowlin'.", '[email protected]', ['[email protected]']),
)
results = mail.send_mass_mail(emails)

results will be a list of celery AsyncResult objects that you may ignore, or use to check the status of the email delivery task, or even wait for it to complete if want. You have to enable a result backend and set ignore_result to False in CELERY_EMAIL_TASK_CONFIG if you want to use these. You should also set CELERY_EMAIL_CHUNK_SIZE = 1 in settings if you are concerned about task status and results.

See the Celery docs for more info.

len(results) will be the number of emails you attempted to send divided by CELERY_EMAIL_CHUNK_SIZE, and is in no way a reflection on the success or failure of their delivery.

Changelog

3.1.0 - Unreleased

  • Support for Django 3.1
  • Support for Celery 5

3.0.0 - 2019.12.10

  • Support for Django 3.0
  • Support for Python 3.8
  • Droppped support for Django 1.x, Django 2.0 and Django 2.1
  • Droppped support for Python 2.7

2.0.2 - 2019.05.29

  • Reduce memory usage by running email_to_dict on chunks. Thanks Paul Brown.
  • Simplify dict_to_email for readability and efficiency. Thanks Paul Brown.
  • Update test matrix for supported versions of Django, Celery and Python. Thanks James.

2.0.1 - 2018.18.27

  • Fix bug preventing sending text/* encoded mime attachments. Thanks Cesar Canassa.

2.0 - 2017.07.10

  • Support for Django 1.11 and Celery 4.0
  • Dropped support for Celery 2.x and 3.x
  • Dropped support for Python 3.3

1.1.5 - 2016.07.20

  • Support extra email attributes via CELERY_EMAIL_MESSAGE_EXTRA_ATTRIBUTES setting
  • Updated version requirements in README

1.1.4 - 2016.01.19

  • Support sending email with embedded images. Thanks Georg Zimmer.
  • Document CELERY_EMAIL_CHUNK_SIZE. Thanks Jonas Haag.
  • Add exception handling to email backend connection. Thanks Tom.

1.1.3 - 2015.11.06

  • Support setting celery.base from string. Thanks Matthew Jacobi.
  • Use six for py2/3 string compatibility. Thanks Matthew Jacobi.
  • Pass content_subtype back in for retries. Thanks Mark Joshua Tan.
  • Rework how tests work, add tox, rework travis-ci matrix.
  • Use six from django.utils.
  • Release a universal wheel.

1.1.2 - 2015.07.06

  • Fix for HTML-only emails. Thanks gnarvaja.

1.1.1 - 2015.03.20

  • Fix for backward compatibility of task kwarg handling - Thanks Jeremy Thurgood.

1.1.0 - 2015.03.06

  • New PyPI release rolling up 1.0.5 changes and some cleanup.
  • More backward compatability in task. Will still accept message objects and lists of message objects.
  • Thanks again to everyone who contributed to 1.0.5.

1.0.5 - 2014.08.24

  • Django 1.6 support, Travis CI testing, chunked sending & more - thanks Jonas Haag.
  • HTML email support - thanks Andres Riancho.
  • Support for JSON transit for Celery, sponsored by DigiACTive.
  • Drop support for Django 1.2.

1.0.4 - 2013.10.12

  • Add Django 1.5.2 and Python 3 support.
  • Thanks to Stefan Wehrmeyer for the contribution.

1.0.3 - 2012.03.06

  • Backend will now pass any kwargs with which it is initialized to the email sending backend.
  • Thanks to Fedor Tyurin for the contribution.

1.0.2 - 2012.02.21

  • Task and backend now accept kwargs that can be used in signal handlers.
  • Task now returns the result from the email sending backend.
  • Thanks to Yehonatan Daniv for these changes.

1.0.1 - 2011.10.06

  • Fixed a bug that resulted in tasks that were throwing errors reporting success.
  • If there is an exception thrown by the sending email backend, the result of the task will now be this exception.

django-celery-email's People

Contributors

andresriancho avatar btx avatar daxtens avatar dheerajreal avatar georgmzimmer avatar gnarvaja avatar hendrikschneider avatar japsu avatar jerith avatar jmsmkn avatar jonashaag avatar mark-tan avatar oppianmatt avatar pawl avatar pawl-bb avatar philippbosch avatar pigletto avatar pmac avatar pmclanahan avatar poxip avatar stefanw avatar tartieret avatar teosibileau avatar tomleo avatar ydaniv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

django-celery-email's Issues

Documentation: Minimum Required Django Version

Project's GitHub description states compatibility with Django 1.2+, but readme indicates 1.3+. There's no way to open a PR for project metadata so I thought I'd open this issue instead.

Thanks for sharing your code!

Extra args on EmailMessage no longer working

I have my configuration set up like this

EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
CELERY_EMAIL_BACKEND = "djrill.mail.backends.djrill.DjrillBackend"

meaning that I use Mandrill to send mails.

In 1.0.4 I was able to set extra args on the EmailMessage object to use templates in Mandrill

email.template_name = 'report-{}'.format(get_language())
email.template_content = {}
email.global_merge_vars = {
    'CLIENT': Client.objects.get(slug=client_slug).name,
}

All versions after 1.0.4 no longer sends these arguments all the way to Mandrill

Documentation: Add pickle serializer requirement

Add documentation text explaining that this module only works if the CELERY_TASK_SERIALIZER is pickle. Otherwise the pickling of email messages fails:

>>> from django.core.mail import EmailMessage
>>> e = EmailMessage('a', 'b', '[email protected]')
>>> import json
>>> json.dumps(e)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/json/encoder.py", line 178, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <django.core.mail.message.EmailMessage object at 0x3f95c10> is not JSON serializable
>>> 

Compatibility with Django v5.0

Hi,

Has anybody been able to get django-celery-email working with celery 5? I have tried to get it running but get an error and not sure of it should work out of the box or there is some compatibility issue.

Thanks

No message are consumed

i have a problem, because the messages are send to the rabbitmq broker, but no answer and the task is not executed.

[ERROR/MainProcess] Received unregistered task of type 'djcelery_email_send_multiple'.

I'm trying to use the app to send emails but I'm always facing an error.

These are the packages in my environment:

Django==1.8.3
amqp==1.4.6
anyjson==0.3.3
billiard==3.3.0.20
celery==3.1.18
django-appconf==1.0.1
django-celery==3.1.16
django-celery-email==1.1.2
django-jfu==2.0.9
kombu==3.0.26
psycopg2==2.6.1
pytz==2015.4
six==1.9.0
wsgiref==0.1.2

settings.py

**
INSTALLED_APPS = (
    ***
    'djcelery',
    'kombu.transport.django',
    'djcelery_email',
    ***
)
**

CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'

CELERY_IMPORTS = ["djcelery_email.tasks"]

celery.py

from __future__ import absolute_import
from celery import Celery

app = Celery('job_costing',
             broker='django://')

if __name__ == '__main__':
    app.start()

init.py

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

Is this working?

Is this library still working today.
Since the last commit to the library was 2 years ago, I'm wondering if it is still relevant today.

email doesn't send successfully

ENV: django 1.6.5, celery 3.1.17, python 2.7

Celery has setup, everything is ok. I have test function add().

I go with instruction, but nothing happened.

So l looked into the code, and change this line

@shared_task(*_TASK_CONFIG)
def send_emails(messages, backend_kwargs=None, *_kwargs):

to

@shared_task
def send_emails(messages, backend_kwargs=None, **kwargs):

then it works!

Getting "Received and deleted unknown message. Wrong destination?!?" errors from the task

I want to use this for Django's automated email error reporting. They are tested to work synchronously though I'd like them to be sent via a celery task to avoid blocking the response while the email is sent.

I've setup my environment with django-celery-email (using latest celery 4.x), changed the EMAIL_BACKEND, added a Queue called "email", etc.

I run celery as I normally do: celery worker -A projectname, and I can see the new queue there.

However, everytime an email is meant to send, celery spits out this error:

[2017-01-16 15:50:24,066: WARNING/MainProcess] Received and deleted unknown message.  Wrong destination?!?

The full contents of the message body was: body: [[[{u'body': u'"POST /api/1/contacts/ HTTP/1.1" 500 27\n\nReport\n"POST /api/1/contacts/ HTTP/1.1" 500 27\n\nDjango Version: 1.10.4\nPython Executable: /home/harel/dev/crmpro/env/bin/python\nPython Version: 2.7.12\nPython Path: [\'/home/harel/dev/crmpro/crmpro/crmpro\', \'/home/harel/dev/crmpro/env/lib/python2.7\', \'/home/harel/dev/crmpro/env/lib/python2.7/plat-x86_64-linux-gnu\', \'/home/harel/dev/crmpro/env/lib/python2.7/lib-tk\', \'/home/harel/dev/crmpro/env/lib/python2.7/lib-old\', \'/home/harel/dev/crmpro/env/lib/python2.7/lib-dynload\', \'/usr/lib/python2.7\', \'/usr/lib/python2.7/plat-x86_64-linux-gnu\', \'/usr/lib/python2.7/lib-tk\', \'/home/harel/dev/crmpro/env/local/lib/python2.7/site-packages\', \'/home/harel/dev/crmpro/env/lib/python2.7/site-packages\', \'/home/harel/dev/crmpro/crmpro/crmpro\']\nServer time: Mon, 16 Jan 2017 15:50:24 +0000\nInstalled Applications:\n[\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n... (16292b)
{content_type:'application/json' content_encoding:'utf-8'
  delivery_info:{'consumer_tag': 'None4', 'redelivered': False, 'routing_key': 'default', 'delivery_tag': 12L, 'exchange': ''} headers={'\xe5\xca.\xdb\x00\x00\x00\x00\x00': None, 'P&5\x07\x00': None, 'T\nKB\x00\x00\x00': 'c37cb5d4-22d6-4752-a44b-b8066a732aa1', 'N\xfd\x17=\x00\x00': 'gen32174@fiber', '\xcfb\xddR': 'py', '9*\xa8': None, '\xb7/b\x84\x00\x00\x00': 0, '\xe0\x0b\xfa\x89\x00\x00\x00': None, '\xdfR\xc4x\x00\x00\x00\x00\x00': [None, None], 'T3\x1d ': 'djcelery_email_send_multiple', '\xae\xbf': 'c37cb5d4-22d6-4752-a44b-b8066a732aa1', '\x11s\x1f\xd8\x00\x00\x00\x00': '([{\'body\': \'"POST /api/1/contacts/ HTTP/1.1" 500 27\n\nReport\n"POST /api/1/contacts/ HTTP/1.1" 500 27\n\nDjango Version: 1.10.4\nPython Executable: /home/harel/dev/crmpro/env/bin/python\nPython Version: 2.7.12\nPython Path: [\'/home/harel/dev/crmpro/crmpro/crmpro\', \'/home/harel/dev/crmpro/env/lib/python2.7\', \'/home/harel/dev/crmpro/env/lib/python2.7/plat-x86_64-linux-gnu\', \'/home/harel/dev/crmpro/env/lib/python2.7/lib-tk\', \'/home/harel/dev/crmpro/env/lib/python2.7/lib-old\', \'/home/harel/dev/crmpro/env/lib/python2.7/lib-dynload\', \'/usr/lib/python2.7\', \'/usr/lib/python2.7/plat-x86_64-linux-gnu\', \'/usr/lib/python2.7/lib-tk\', \'/home/harel/dev/crmpro/env/local/lib/python2.7/site-packages\', \'/home/harel/dev/crmpro/env/lib/python2.7/site-packages\', \'/home/harel/dev/crmpro/crmpro/crmpro\']\nServer time: Mon, 16 Jan 2017 15:50:24 +0000\nInstalled Applications:\n[\'django.contrib.admin\',\n \'django.contrib.auth\',\n \'django.contrib.contenttypes\',\n \'django.contrib.sessions\',\n \'django.contrib.messages\',\n \'django.contrib.staticfiles\',\n...\', ...}])', 'UL\xa1\xfc\x00\x00\x00\x00\x00\x00': '{}'}}


Any idea? It looks like the tasks is not receiving a proper "task"?

conn.open needs try/catch to retry

When sending the emails need to also try/catch the conn.open part so if the connection open fails it can retry all the messages.

...
    conn = get_connection(backend=settings.CELERY_EMAIL_BACKEND, **combined_kwargs)
    conn.open()

    messages_sent = 0

    for message in messages:
        try:
            sent = conn.send_messages([dict_to_email(message)])
            if sent is not None:
                messages_sent += sent
            logger.debug("Successfully sent email message to %r.", message['to'])
        except Exception as e:
            # Not expecting any specific kind of exception here because it
            # could be any number of things, depending on the backend
            logger.warning("Failed to send email message to %r, retrying. (%r)",
                           message['to'], e)
            send_emails.retry([[message], combined_kwargs], exc=e, throw=False)

    conn.close()

And if there is a SoftTimeLimitExceeded error, it should try cleanup and exit

Celery task fails with 'too many concurrent connections'

When sending a lot of mails with django-celery-email as backend, I often get an error in my celery logs, that there were too many concurrent connections.

I have set EMAIL_BACKEND accordingly:

EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'

And I am sending emails like so:

with mail.get_connection() as connection:
    for recipient in set(recipients):
        email = EmailMessage(subject, content, sender, [recipient],
                             headers=headers,
                             connection=connection, **kwargs)
        if attachments is not None:
            for attach in attachments:
                email.attach_file(attach)
        try:
            email.send(fail_silently=True)
        except Exception as e:
            print("Error when sending mail:", e)
            failed = True
        else:
            succeeded = True

I was expecting that this opens one connection and sends all emails using this one connection. Is this a wrong assumption? How can I force the mail backend to only use one single connection?

Type error for send_messages

Hello,

I'm using 2.0.0 version on my project. I have a some problems. I found this in my log file.

"Cannot reach CELERY_EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend"

And After, we add this parameter.

CELERY_EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'

After, I have a new problem.

djcelery_email_send_multiple[49d3b5a9-b1af-424c-8709-95b506d66c49]: Failed to send email message to [u'[email protected]'], retrying. (TypeError("unsupported operand type(s) for +=: 'int' and 'list'",))

Because send_messages method of CeleryEmailBackend return to list.

messages_sent += sent

Emails to send at background

I simply follow the README then i just add EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' in settings and then apps: celery==4.2.1
django-celery-email==2.0.1
but emails are not sending at background

fail_silently is ignored, allows DoS due to huge response delays

Overview

CeleryEmailBackend ignores the fail_silently option when enqueuing messages in send_messages(). When the Celery message broker is down and DEBUG is False, this causes huge delays in requests where a server error occurs. This allows a DoS attack.

Steps to reproduce:

  1. Ensure Celery is configured to retry failed publishing of tasks (on by default).
  2. Set DEBUG to False in settings.py.
  3. Stop the Celery message broker.
  4. Send a request that causes a server error (you can simply raise an artificial error in a view and then call it).

Expected behavior

The response should take 1-2 seconds, depending on the configured Celery message sending retry policy (see (https://docs.celeryproject.org/en/latest/userguide/calling.html#calling-retry)).

Actual behavior

The response takes about a minute (many times more than the expected time).

Analysis

A typical Django application has several middleware classes in front of the application views. The middleware classes are chained together. To propagate the request, each middleware calls get_response(), which translates to django.core.handlers.exception.convert_exception_to_response.inner(). Its code is:

def inner(request):
    try:
        response = get_response(request)
    except Exception as exc:
        response = response_for_exception(request, exc)
    return response

When an error occurs, it is logged inside response_for_exception(). The default logging configuration attempts to send an error report to the website admins, and passes fail_silently to the email backend. But when the Celery message broker is down, CeleryEmailBackend does not suppress the exception thrown by Celery/Kombu (kombu.exceptions.OperationalError), and the exception escapes out of response_for_exception(). It is caught by the get_response() call of the previous middleware, which in turn repeats the process. This retry process is repeated as many times as the number of middleware classes configured, which significantly multiplies the expected response delay.

Note: This is not caused by a Celery issue ((celery/celery#4296)). I am aware of this issue and have applied a workaround, but the problem described here still persists.

Solution

I have managed to work around this issue by wrapping CeleryEmailBackend in the following subclass:

logger = logging.getLogger(__name__)

class CustomCeleryEmailBackend(CeleryEmailBackend):
    def send_messages(self, *args, **kwargs):
        try:
            super().send_messages(*args, **kwargs)
        except OperationalError:
            if not self.fail_silently:
                raise
            logger.exception('Error enqueuing messages.')

A fix in the library code would be similar and quite simple - wrap calls to send_emails.delay() in a try block, and if an OperationalError exception is caught and fail_silently is set, suppress the exception, possibly logging it to prevent it from being unnoticed.

Stacktrace

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/views/decorators/http.py", line 40, in inner
    return func(request, *args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/Users/victor/work/someapp/web/views/public.py", line 116, in index
    raise Exception('test error')
Exception: test error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/work/someapp/web/middleware/apperror.py", line 10, in __call__
    return self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/work/someapp/web/middleware/timezone.py", line 19, in middleware
    return get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/blacklist/middleware.py", line 25, in middleware
    return get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/work/someapp/web/middleware/proxy.py", line 82, in middleware
    return get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/deprecation.py", line 94, in __call__
    response = response or self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 42, in __call__
    return self.__value__
AttributeError: 'ChannelPromise' object has no attribute '__value__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 141, in __call__
    response = self.get_response(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/base.py", line 75, in get_response
    response = self._middleware_chain(request)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 36, in inner
    response = response_for_exception(request, exc)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/handlers/exception.py", line 95, in response_for_exception
    exc_info=sys.exc_info(),
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 228, in log_response
    exc_info=exc_info,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1412, in error
    self._log(ERROR, msg, args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1529, in handle
    self.callHandlers(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 1591, in callHandlers
    hdlr.handle(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/logging/__init__.py", line 905, in handle
    self.emit(record)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 122, in emit
    self.send_mail(subject, message, fail_silently=True, html_message=html_message)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/utils/log.py", line 125, in send_mail
    mail.mail_admins(subject, message, *args, connection=self.connection(), **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/__init__.py", line 101, in mail_admins
    mail.send(fail_silently=fail_silently)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/django/core/mail/message.py", line 291, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/djcelery_email/backends.py", line 17, in send_messages
    result_tasks.append(send_emails.delay(chunk_messages, self.init_kwargs))
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 427, in delay
    return self.apply_async(args, kwargs)
  File "/Users/victor/work/someapp/web/tasks.py", line 10, in apply_async
    return super().apply_async(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/task.py", line 570, in apply_async
    **options
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/base.py", line 756, in send_task
    amqp.send_task_message(P, name, message, **options)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/celery/app/amqp.py", line 552, in send_task_message
    **properties
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 181, in publish
    exchange_name, declare,
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 510, in _ensured
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 187, in _publish
    channel = self.channel
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 209, in _get_channel
    channel = self._channel = channel()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 44, in __call__
    value = self.__value__ = self.__contract__()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/messaging.py", line 224, in <lambda>
    channel = ChannelPromise(lambda: connection.default_channel)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 852, in default_channel
    self.ensure_connection(**conn_opts)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 436, in _reraise_as_library_errors
    sys.exc_info()[2])
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/vine/five.py", line 194, in reraise
    raise value.with_traceback(tb)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 431, in _reraise_as_library_errors
    yield
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 422, in ensure_connection
    callback, timeout=timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/utils/functional.py", line 343, in retry_over_time
    return fun(*args, **kwargs)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 275, in connect
    return self.connection
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 823, in connection
    self._connection = self._establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/connection.py", line 778, in _establish_connection
    conn = self.transport.establish_connection()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
    conn.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/connection.py", line 307, in connect
    self.transport.connect()
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 77, in connect
    self._connect(self.host, self.port, self.connect_timeout)
  File "/Users/victor/anaconda3/envs/someapp/lib/python3.7/site-packages/amqp/transport.py", line 161, in _connect
    self.sock.connect(sa)
kombu.exceptions.OperationalError: [Errno 61] Connection refused
[29/Jul/2019 15:10:12] "GET / HTTP/1.1" 500 59

Specify which account to send mail

Hi, is it possible to specify the account we want to send mail from it? Because we may need different sender accounts(but their mail hosts are same)
I mean Something similar to auth_user auth_password input parameters in django builtin send_mail function

Hide message details in headers?

I've been trying to ensure all sensitive data we send to our queue is encrypted, which includes some short-lived tokens I send by email.

kombu-fernet-serializers is doing a great job of encrypting the bodies of messages, but it doesn't encrypt message headers.

Celery messages include argsrepr and kwargsrepr headers (the structure of these messages is documented here), which in django-celery-email's case, results in a lot of the detail of each message being logged.

Celery have recommendations on how to hide these arguments, but I can't figure out how I can hide them without subclassing the backend like this:

from django.conf import settings

from djcelery_email import backends
from djcelery_email.tasks import send_emails
from djcelery_email.utils import chunked, email_to_dict


class CeleryEmailBackend(backends.CeleryEmailBackend):
    def send_messages(self, email_messages):
        result_tasks = []
        for chunk in chunked(email_messages, settings.CELERY_EMAIL_CHUNK_SIZE):
            chunk_messages = [email_to_dict(msg) for msg in chunk]
            result_tasks.append(
                send_emails.apply_async(
                    (chunk_messages, self.init_kwargs),
                    argsrepr="(django-celery-email messages)",
                )
            )

        return result_tasks

I'd be happy to work on a PR to make this possible, but I'm not sure what the best way to proceed would be. A setting to hide args? A setting to specify extra kwargs to apply_async?

Looking forward to hearing your feedback!

Email tasks are not written to the results database, nor can they be tracked

Issue:

Sending email via django-celery-email, results cannot be tracked, leading to issues with e.g. the following scenario:

  1. A user submits (via a django form) a support request.
  2. The request is emailed (from the backend) to interested parties.
  3. The email result cannot be tracked, thus it is impossible to provide feedback to the user.

Non-django celery email tasks do not exhibit this behaviour.

Config:

# pip freeze|grep -i 'django\|celery'
celery==4.2.0
Django==1.11.4
django-celery-email==2.0.0
CELERY_EMAIL_TASK_CONFIG = {
       'task_serializer': 'json',
       'result_serializer': 'json', 
       'name': 'djcelery_email_send_multiple',
       'ignore_result': False, 
       'result_backend': 'db+postgresql://****'
 }

Procedure:

Send an email (e.g. via mail.send_mail(...))

The email is delivered successfully, i.e. the task completes.

Observed:

Resulting task has an ID but no entry in the database:

ipdb> task
<AsyncResult: 1d7ac887-fc81-42c7-b6c7-a77449d4bf9f>

$  echo 'select * from celery_taskmeta;' | ./manage.py dbshell
 id | task_id | status | result | date_done | traceback
----+---------+--------+--------+-----------+-----------
(0 rows)

Task cannot be waited for, and status is not updated:

pdb> task.state
u'PENDING'
ipdb> task.wait()      # I killed it here after ~30 seconds
^C*** KeyboardInterrupt:
ipdb> task.state
u'PENDING'

Expected:

The task is written to the database, and the status is updated to SUCCESS or FAILURE as appropriate.

Additional Info:

The problem also occurs if the django-celery-email task is run directly:

ipdb> mess = email_to_dict(msg)
ipdb> results = send_emails.delay(mess)
ipdb> results
<AsyncResult: 6fd42b8c-b2e7-4576-af89-f46304e04cff>
ipdb> results.status
u'PENDING'

It does not occur if a non-email task is executed:

ipdb> from myapp.celery import debug_task
ipdb> t = debug_task.delay()
ipdb> t
<AsyncResult: 8baed263-7269-43e4-88de-e9fc6d8828aa>
ipdb> t.status
u'SUCCESS'

$ echo 'select * from celery_taskmeta;' | ./manage.py dbshell
 id |               task_id                | status  | result |         date_done          | traceback
----+--------------------------------------+---------+--------+----------------------------+-----------
 16 | 8baed263-7269-43e4-88de-e9fc6d8828aa | SUCCESS |        | 2018-06-26 16:11:08.613751 |

Update: added software versions

Documentation about installation and use

I can send emails with celery with tasks I wrote. But something is wrong with my install of dj_delery_email, because my emails stay PENDING

Celery see djcelery taks:

[tasks]
  . djcelery_email_send_multiple

But

In [61]: res = mail.send_mass_mail(mails)

In [62]: res
Out[62]: [<AsyncResult: 94651aee-ded9-40e4-a9f2-4019f4a4d349>]

In [63]: res[0].status
Out[63]: 'PENDING'

And no log at celery server

How can I degug it?

Getting connection refused error

I followed the steps exactly but I'm getting the following error.

error: [Errno 111] Connection refused

This is a existing project, for which email sending works as expected if I use the standard django email backends. However I get this error as soon as I change to the djcelery_email backend.

installing issue

Traceback (most recent call last):
removed
application = get_wsgi_application()
File "/usr/local/lib/python3.7/dist-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/usr/local/lib/python3.7/dist-packages/django/init.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/local/lib/python3.7/dist-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/usr/local/lib/python3.7/dist-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File "/usr/lib/python3.7/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1006, in _gcd_import
File "", line 983, in _find_and_load
File "", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'django-celery-email'

Celery 4.x support

Are there plans for supporting Celery 4.x in nearest future? If so, could you give an estimation?

Attachments: TypeError("a bytes-like object is required, not 'str'",

I get the following error when i try to attach files.

[2017-07-18 05:15:38,369: WARNING/PoolWorker-4] djcelery_email_send_multiple[c7cebd25-27d8-4b3c-9734-0a6a5729ee4f]: Failed to send email message to ['[email protected]'], retrying. (TypeError("a bytes-like object is required, not 'str'",))

I've tried a number of ways to attach files. But essentially it's this

docfile = default_storage.open(attachment['file_path'], 'r')
if docfile:
    message.attach(attachment['name'], docfile.read())

I have to do all the default_storage stuff because my files live on S3 and I need to open it via the storage and then call read(). But i don't think it matters what storage i use. Also docfile.read() returns a bytes string. Note i'm using python 3.6+ and version 2.0.0 of the module.

It seems calling attach() converts it to str. After some debugging, it seems to happen here https://github.com/django/django/blob/master/django/core/mail/message.py#L324

It seems here we're expecting contents to be binary(does that mean a bytes string?)

filename, binary_contents, mimetype = attachment
contents = base64.b64encode(binary_contents).decode('ascii')

This is where i get the TypeError. Note my attached files are txt.

There could probably be something obvious i'm missing here, on how to attach files.
I will explore some more(and try other files) and add some more info later. But any help would be greatly appreciated.

rate_limit task setting will discard tasks if exceeded

I know it's not a required setting, but it appears as though celery will just discard the tasks if this rate_limit is exceeded. In other words, if this is set, and you're exceeded the rate_limit sending emails, the emails will just get discarded which is probably not the behavior you intended.

Please correct me if I'm wrong.

Django 2.1 support

Is Django 2.1 officially supported? If so, please, update tox, travis and supported Django versions clause. In my tests (clone, install reqs, run tests ./runtests.py) it seems to work.

HTML only emails sent as plain text

Messages with content_subtype overridden to "html" are sent as plain text when passing through djcelery.

It's because in the serialization process (email_to_dict function), only some attributes are copied.

Fix in #17

"Could not find any downloads that satisfy the requirement django-celery-email"

Hi, I getting this error on pip install django-celery-email

pip install django-celery-email       
Downloading/unpacking django-celery-email
  Cannot fetch index base URL https://pypi.python.org/simple/
  Could not find any downloads that satisfy the requirement django-celery-email
Cleaning up...
No distributions at all found for django-celery-email
Storing debug log for failure in pip.log

How to set celery.base

I have an abstract celery base Task for adding extra logging with our celery tasks. Like so:

@task(queue='email', base=LoggingTask)
def foo()
...

But I can't set that in the settings, can't import it since it imports celery which causes circular import and can't use a string.

CELERY_EMAIL_TASK_CONFIG = {
    # we want emails to be high priority
    'queue': 'emails',
    # can also configure rate limit
    # 'rate_limit': '50/m',
    'ignore_result': True,
    # extra logging
    'base': 'celeryutils.LoggingTask',
}

http://celery.readthedocs.org/en/latest/userguide/tasks.html#abstract-classes

SMTPServerDisconnected('please run connect() first',)

I am getting SMTPServerDisconnected('please run connect() first',) on some SMTP servers. I have no clue what could be wrong. For example GMail is working fine. When I move to my local provider I get this error. Do you think it could be a problem of django-celery-email?

Funny thing is, when I ommit EMAIL_TIMEOUT setting, those e-mails are sent in about 270 seconds or more! One by one ...

Attachments do not work in 1.1.5

I've just spent a lot of time investigating why sending emails with attachments fails.
You already have a working fix but it's not a part of the current 1.1.5 version.
Please either release 1.1.6 or mention in the documentation that attachments don't work.
Thanks!

Django 4.0 compatability

Hello,

I am using celery 5.2.7, Django 4.0, django-celery-email 3.0.0 and django-celery-beat 2.3.0. When I try to start celery with the following command: exec celery -A myapp worker -l info --concurrency 6 -B , which used to work with Django 2.2, but I getting the following error in djcelery_email:

File "/Users/antonio/workspace/projects/myapp/env/lib/python3.8/site-packages/djcelery_email/tasks.py", line 3, in
from django.utils.six import string_types
ModuleNotFoundError: No module named 'django.utils.six'

Is the latest version compatible with Django 4.0 ?

Thanks.

Running the celery worker server for django-celery-email (Doc Request)

Looking at the fist steps with celery doc, I can't seem to bridge the gap between installing django-celery-email and installing celery (pip install celery) and setting up the worker server. Looking at these docs, http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#application you have to configure an application. Can someone fill in the gaps for those of us new to celery?

I also came across this: http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#starting-the-worker-process . Is there a copy and paste task(s).py we can use for the django-celery-email app? Thanks, Rad.

Retrying returns as Succeeded, even though it should have failed

I'm currently on 1.1.4 and when I take down my email server I see this:

worker_1    | [2016-07-31 16:11:13,604: ERROR/Worker-3] email_send[c4bacb03-cc3a-468f-80ec-a4dfc20bf7f4]: Cannot reach CELERY_EMAIL_BACKEND django.core.mail.backends.smtp.EmailBackend
worker_1    | Traceback (most recent call last):
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/djcelery_email/tasks.py", line 48, in send_emails
worker_1    |     conn.open()
worker_1    |   File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 58, in open
worker_1    |     self.connection = connection_class(self.host, self.port, **connection_params)
worker_1    |   File "/usr/lib/python2.7/smtplib.py", line 256, in __init__
worker_1    |     (code, msg) = self.connect(host, port)
worker_1    |   File "/usr/lib/python2.7/smtplib.py", line 316, in connect
worker_1    |     self.sock = self._get_socket(host, port, self.timeout)
worker_1    |   File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket
worker_1    |     return socket.create_connection((host, port), timeout)
worker_1    |   File "/usr/lib/python2.7/socket.py", line 553, in create_connection
worker_1    |     for res in getaddrinfo(host, port, 0, SOCK_STREAM):
worker_1    | gaierror: [Errno -5] No address associated with hostname
worker_1    | [2016-07-31 16:11:13,610: WARNING/Worker-3] email_send[c4bacb03-cc3a-468f-80ec-a4dfc20bf7f4]: Failed to send email message to [u'[email protected]'], retrying. (gaierror(-5, 'No address associated with hostname'))
worker_1    | [2016-07-31 16:11:13,613: INFO/MainProcess] Received task: email_send[c4bacb03-cc3a-468f-80ec-a4dfc20bf7f4] eta:[2016-07-31 16:12:13.610791-07:00]
worker_1    | [2016-07-31 16:11:13,616: INFO/MainProcess] Task email_send[c4bacb03-cc3a-468f-80ec-a4dfc20bf7f4] succeeded in 0.0200942240008s: 0

The first time it tries to send, it properly returns the error. But when it retries it marks it as succeeded.
Even though it continues to be down, it returns with a succeed on the retry. I have confirmed the message actually never gets sent.

Retry on `TimeLimitExceeded`

Sometimes worker is stuck on executing email tasks (probably connection problems). To fix this, there is an Celery option TASK_TIME_LIMIT where you can limit task execution time (p.s. default value is infinite). However, when task hits time limit, worker is killed with SIGKILL and what I see from logs, the task is not retried for the second time.

[2020-05-12 11:04:51,352: INFO/MainProcess] Received task: djcelery_email_send_multiple[44dfa3fd-f801-4d8d-b15f-eec05c1e04b4]                                 │
│[2020-05-12 11:05:51,371: ERROR/MainProcess] Task handler raised error: TimeLimitExceeded(60,)                                                                │
│Traceback (most recent call last):                                                                                                                            │
│  File "/opt/venvs/www/lib/python3.5/site-packages/billiard/pool.py", line 658, in on_hard_timeout                                                      │
│    raise TimeLimitExceeded(job._timeout)                                                                                                                     │
│billiard.exceptions.TimeLimitExceeded: TimeLimitExceeded(60,)                                                                                                 │
│[2020-05-12 11:05:51,373: ERROR/MainProcess] Hard time limit (60s) exceeded for djcelery_email_send_multiple[44dfa3fd-f801-4d8d-b15f-eec05c1e04b4]            │
│[2020-05-12 11:05:51,522: ERROR/MainProcess] Process 'ForkPoolWorker-1' pid:17908 exited with 'signal 9 (SIGKILL)'                                            │
│[2020-05-12 11:09:45,841: INFO/MainProcess] Received task: djcelery_email_send_multiple[399a06d3-629f-42df-a926-9afb76afc98e]                                 │
│[2020-05-12 11:09:47,142: INFO/ForkPoolWorker-2] Task djcelery_email_send_multiple[399a06d3-629f-42df-a926-9afb76afc98e] succeeded in 1.2928511229692958s: 1

I am considering to use https://docs.celeryproject.org/en/latest/userguide/configuration.html#task-reject-on-worker-lost, but as docs states, it is probably not the best way to handle this error.

I guess the easiest way would be to handle such error in django-celery-email internally. Or maybe I am missing something?

TypeError: send_emails() takes at least 1 argument (0 given)

Hello everyone
I'm trying to get working this trinity: django-celery, django-celery-email and django-post-office.
Settings contains

EMAIL_BACKEND = 'post_office.EmailBackend'
CELERY_EMAIL_TASK_CONFIG = { 'ignore_result': False,}

POST_OFFICE = {
    'EMAIL_BACKEND': 'djcelery_email.backends.CeleryEmailBackend',
    'DEFAULT_PRIORITY': 'now',
}

And everything looks working perfectly except celery periodic task which I've added via django admin. I've choosen the registered task 'djcelery_email_send_multiple' and apply interval of 10'. The task is sending by celery beat on execution but celery demon just outputs:

ERROR/MainProcess] Task djcelery_email_send_multiple[3d10fc14-1da3-48a5-b8b5-28df9fefea02] raised unexpected: TypeError('send_emails() takes at least 1 argument (0 given)',)
Traceback (most recent call last):
  File "/home/projects/aquashop/local/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/projects/aquashop/local/lib/python2.7/site-packages/celery/app/trace.py", line 438, in __protected_call__
    return self.run(*args, **kwargs)
TypeError: send_emails() takes at least 1 argument (0 given)

Env:
django==1.8.9
celery==3.1.23
django-celery==3.1.17
django-celery-email==1.1.4
django-post-office==2.0.7

So, the question is... Is there a workaround for the issue or i should make my own celery task, which would know about queued mails?

Anymail compatibility

It looks like this package is incompatible with anymail, specifically template_id and merge_data message members do not appear to survive the provided backend. I suspect this occurs during the dict-ification process in said backend, but I haven't dug deeply into it.

It would be nice for these two packages to work together.

Does it work with JSON serialisation?

I'm upgrading an old project that did make use of django-celery-email version 1.0.4.

Can django-celery-email (latest version of) handle JSON serialisation? It hasn't been available in 1.0.4.

Thanks in advance!

Attachments headers not working in 2.0.0

Hi, my attachments headers are stripped when i try to send an e-mail.

django-celery-email: 2.0.0
Django: 1.11.6
Python: 3.6.2

mail = EmailMultiAlternatives(
    'TestMail',
    'Hello World',
    '[email protected]',
    '[email protected]'
)

html = "Some html template with cid:..."

mail.attach_alternative(html, "text/html")
mail.mixed_subtype = 'related'
image_data = open(......)
image_name = "image.png"

# Image
msg_img = MIMEImage(image_data)
msg_img.add_header('Content-ID', '<{}>'.format(image_name))
mail.attach(msg_img)

mail.send()

Thanks in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.