如何从Django启动远程芹菜工作者

问题描述 投票:0回答:1

我正在尝试将芹菜与Django结合使用。

因此我遇到了autodiscover_tasks(),但我不确定如何使用它们。芹菜工人获得其他应用程序添加的任务(在本例中为节点后端)。

到目前为止,我已经使用它来启动工作程序:

celery worker -Q extraction --hostname=extraction_worker

效果很好。

现在,我不确定django-celery集成的总体思路是什么。应该仍然从外部启动工作程序(例如,使用上述命令),还是应该从Django应用程序管理和启动工作程序?

我的celery.py看起来像:

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')

app = Celery('app')

app.config_from_object('django.conf:settings', namespace='CELERY')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

然后我有2个应用程序,其中包含带有task.py文件的:

@shared_task
def extraction(total):
    return 'Task executed'

我现在如何注册Django以为这些任务注册工作人员?

python django celery django-celery worker
1个回答
1
投票

您只需将工作进程启动为documented,就不需要注册其他任何内容

在生产环境中,您需要在作为守护程序的后台-请参阅守护程序-但有关测试和开发时,能够通过以下方式启动工作程序实例非常有用使用celery worker manage命令,就像您使用Django的manage.py runserver:

celery -A proj worker -l info

有关可用命令行选项的完整列表,请使用帮助命令:

celery help

芹菜工作者在运行时收集/注册任务,并使用发现的任务

© www.soinside.com 2019 - 2024. All rights reserved.