Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 理解芹菜和芹菜米利的区别?_Python_Django_Celery - Fatal编程技术网

Python 理解芹菜和芹菜米利的区别?

Python 理解芹菜和芹菜米利的区别?,python,django,celery,Python,Django,Celery,当我与一名工作人员一起运行芹菜时,芹菜工作人员-A myapp-l info,一切正常,任务完成 但是,当我在同一个目录中运行celery multi-start 2-Q:1 message\u send-Q:2 message\u manager时,会出现“接收到的未注册任务”错误。 当我运行两个工人时芹菜是如何发现任务的 我的芹菜.py: # coding: utf-8 from __future__ import absolute_import import os from

当我与一名工作人员一起运行芹菜时,
芹菜工作人员-A myapp-l info
,一切正常,任务完成

但是,当我在同一个目录中运行
celery multi-start 2-Q:1 message\u send-Q:2 message\u manager
时,会出现“接收到的未注册任务”错误。 当我运行两个工人时芹菜是如何发现任务的

我的芹菜.py:

# coding: utf-8
from __future__ import absolute_import    
import os    
from celery import Celery   
from django.conf import settings    
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings.local')

my_app = Myapp('Myapp', include=['myapp.messages.tasks'])

my_app.config_from_object('django.conf:settings')

my_app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@my_app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))
我的设置:

CELERY_ROUTES = {'messages.tasks.send_message': {'queue': 'message_send'},
                 'messages.tasks.control_message_send': {'queue': 'message_manager'}}
CELERY_IMPORTS = ('messages.tasks')
我的项目结构:

myapp
    --settings
    --messages
    |  --fixtures
    |  --migrations
    |  --tests
    |    -- __init__.py
    |    -- api.py
    |    -- tasks.py
    |    -- models.py
    |    -- views.py
    -- __init__.py
    -- celery.py
    -- urls.py
    -- utils.py

更新:问题出在导入中

如果您在django中使用芹菜,最好使用manage.py启动芹菜工人。芹菜(或django芹菜)附带预安装的命令

但是如果你不想使用django命令,你应该像这样用命名的worker启动芹菜multi

celery multi start 1 2 -Q:1 message_send -Q:2 message_manager
其中1和2是工人


有关更多信息,请用户
芹菜多功能--help

谢谢!问题出在进口和芹菜串上。
celery multi start 1 2 -Q:1 message_send -Q:2 message_manager