Python 芹菜Redis返回“;收到类型为“的未注册任务”;
我的问题是,当我尝试调用test()时,它工作得很好,但当我调用test.delay()时,它返回“received unregistered task” 启动服务。 运行test()和test.delay() 来自test.delay()的结果 设置.pyPython 芹菜Redis返回“;收到类型为“的未注册任务”;,python,django,redis,celery,Python,Django,Redis,Celery,我的问题是,当我尝试调用test()时,它工作得很好,但当我调用test.delay()时,它返回“received unregistered task” 启动服务。 运行test()和test.delay() 来自test.delay()的结果 设置.py BROKER_URL = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESUL
BROKER_URL = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_IMPORTS=("tasks")
INSTALLED_APPS = (
"systech_account",
#...
)
tasks.py
from __future__ import absolute_import
from celery import shared_task
@shared_task
def test():
return "Just a Test"
celeryconfig.py
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'root.settings')
app = Celery()
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
我正在使用
- django 1.9
- 芹菜4.0
- Redis服务器2.8.4
- Python 2.7
- Ubuntu 14.04
test()
时,它只是一个方法,因此不需要任何预注册
但是,当您调用test.delay()
时,会向代理发送一条消息(任务),然后由工作进程获取该消息。此工作人员将只知道在芹菜启动之前注册的任务。这就是为什么它不会检测在启动芹菜后执行的任务
编辑
顺便说一句,我注意到的另一件事是,您似乎已将文件命名为
Tasks.py
。必须是tasks.py
,芹菜才能在其中成功地自动发现任务。只要重新启动芹菜就可以解决问题。这是因为当您调用test()
时,它只是一个方法,因此不需要任何预注册
但是,当您调用test.delay()
时,会向代理发送一条消息(任务),然后由工作进程获取该消息。此工作人员将只知道在芹菜启动之前注册的任务。这就是为什么它不会检测在启动芹菜后执行的任务
编辑
顺便说一句,我注意到的另一件事是,您似乎已将文件命名为
Tasks.py
。芹菜要在其中成功地自动发现任务,必须是tasks.py
。我通过使用DJ芹菜解决了这个问题,并卸载芹菜,因为DJ芹菜不支持芹菜4.0,而是安装了3.1.25。我通过使用DJ芹菜解决了这个问题,并卸载芹菜,因为DJ芹菜不支持芹菜4.0并安装了3.1.25相反。谢谢您的回复。当你说“重启芹菜”时,你的意思是重新运行芹菜--app=root。芹菜:app-worker--loglevel=INFO?如果是这样的话,我已经这么做了,但是运气不好。至于Tasks.py,它只是一种类型。谢谢你指出这一点,谢谢你的回复。当你说“重启芹菜”时,你的意思是重新运行芹菜--app=root。芹菜:app-worker--loglevel=INFO?如果是这样的话,我已经这么做了,但是运气不好。至于Tasks.py,它只是一种类型。谢谢你指出这一点。