【问题标题】:How to start remote celery workers from django如何从 django 启动远程 celery worker
【发布时间】: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 来为这些任务注册工作人员?

【问题讨论】:

标签: python django celery django-celery worker


【解决方案1】:

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

在生产环境中,您需要在 作为守护进程的背景 - 请参阅守护进程 - 但用于测试和 开发能够通过以下方式启动工作实例很有用 使用 celery worker manage 命令,就像你使用 Django 的 manage.py 运行服务器:

celery -A proj worker -l info

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

celery help

celery worker 在运行时收集/注册任务并使用它发现的任务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2014-12-24
    • 2018-11-03
    • 2017-11-29
    • 2020-01-14
    • 2023-04-04
    • 2021-12-22
    相关资源
    最近更新 更多