django-celery : TypeError: can only concatenate tuple (not "NoneType") to tuple
django-celery : TypeError: can only concatenate tuple (not "NoneType") to tuple
我最近开始在 django 中使用 rabbitmq 和 celery。我正在使用 django-celery、django-celery-email 和 post office 以异步方式发送电子邮件。
安装所有这些软件包后,我的 settings.py 看起来像
INSTALLED_APPS = [
#other apps
'djcelery',
'djcelery_email',
'post_office'
]
# setup celery
import djcelery
djcelery.setup_loader()
# using post office as the default email backend
EMAIL_BACKEND = 'post_office.EmailBackend'
# using djcelery's email backend as a backend for post office
POST_OFFICE_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
POST_OFFICE = {
'DEFAULT_PRIORITY' : 'now'
}
EMAIL_HOST = 'YOUR_HOST_NAME'
EMAIL_HOST_USER = "YOUR_HOST_USER_NAME"
EMAIL_PORT = 25 # default smtp port
EMAIL_HOST_PASSWORD = "YOUR_HOST_USER_PASSWORD"
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = 'testing@example.com'
当我尝试通过命令 运行 django-celery 时
**python manage.py celeryd**
正在通过以下错误
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 206, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 40, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/djcelery/management/commands/celeryd.py", line 16, in <module>
class Command(CeleryCommand):
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/djcelery/management/commands/celeryd.py", line 20, in Command
worker.get_options() +
TypeError: can only concatenate tuple (not "NoneType") to tuple
这里有人帮我解决这个问题
即使我也遇到了同样的问题,我试图通过 djcelery 包将 celery 与 django 集成。然后我阅读了许多博客和文档,发现以下结论。
"Previous versions of Celery required a separate library to work with Django, but since 3.1 this is no longer the case. Django is supported out of the box now"
[芹菜笔记][1]http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
在不使用 djcelery 的情况下,我直接编写了任务并且成功了!
只需在“~/anaconda2/envs/test_django/lib/python3.6/site-packages/djcelery/management/commands/celery.py”中注释掉这些行,如下所示:
14 # options = (CeleryCommand.options +
15 # base.get_options() +
16 # base.preload_options)
然后就可以了。
我最近开始在 django 中使用 rabbitmq 和 celery。我正在使用 django-celery、django-celery-email 和 post office 以异步方式发送电子邮件。 安装所有这些软件包后,我的 settings.py 看起来像
INSTALLED_APPS = [
#other apps
'djcelery',
'djcelery_email',
'post_office'
]
# setup celery
import djcelery
djcelery.setup_loader()
# using post office as the default email backend
EMAIL_BACKEND = 'post_office.EmailBackend'
# using djcelery's email backend as a backend for post office
POST_OFFICE_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'
POST_OFFICE = {
'DEFAULT_PRIORITY' : 'now'
}
EMAIL_HOST = 'YOUR_HOST_NAME'
EMAIL_HOST_USER = "YOUR_HOST_USER_NAME"
EMAIL_PORT = 25 # default smtp port
EMAIL_HOST_PASSWORD = "YOUR_HOST_USER_PASSWORD"
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = 'testing@example.com'
当我尝试通过命令 运行 django-celery 时
**python manage.py celeryd**
正在通过以下错误
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 206, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 40, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/djcelery/management/commands/celeryd.py", line 16, in <module>
class Command(CeleryCommand):
File "/home/ubuntu/edyodavirtual/local/lib/python2.7/site-packages/djcelery/management/commands/celeryd.py", line 20, in Command
worker.get_options() +
TypeError: can only concatenate tuple (not "NoneType") to tuple
这里有人帮我解决这个问题
即使我也遇到了同样的问题,我试图通过 djcelery 包将 celery 与 django 集成。然后我阅读了许多博客和文档,发现以下结论。
"Previous versions of Celery required a separate library to work with Django, but since 3.1 this is no longer the case. Django is supported out of the box now"
[芹菜笔记][1]http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html
在不使用 djcelery 的情况下,我直接编写了任务并且成功了!
只需在“~/anaconda2/envs/test_django/lib/python3.6/site-packages/djcelery/management/commands/celery.py”中注释掉这些行,如下所示:
14 # options = (CeleryCommand.options +
15 # base.get_options() +
16 # base.preload_options)
然后就可以了。