【发布时间】:2020-05-29 13:37:00
【问题描述】:
我正在尝试将 django 与 celery 结合使用。
因此我遇到了autodiscover_tasks(),但我不确定如何使用它们。 celery 工作人员获取其他应用程序(在本例中为节点后端)添加的任务。
到目前为止,我用它来启动工人:
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 个包含 tasks.py 文件的应用程序:
@shared_task
def extraction(total):
return 'Task executed'
我现在如何注册 django 来为这些任务注册工作人员?
【问题讨论】:
-
django-celery 集成是什么意思
-
也许它具有误导性。基本上将 celery 与 django 一起使用,如docs.celeryproject.org/en/stable/django/… 中所述
-
刚刚签出,因为在 celery 3.1 版之前有包 django-celery,不再需要集成点
-
另外我想如果你去docs.celeryproject.org/en/stable/getting-started/…你会更清楚流程
-
好吧,经过一番阅读,我意识到我需要通过 celery 命令开始,而不是通过应用程序本身
标签: python django celery django-celery worker