【问题标题】:Can't understand relationship of Celery Tasks to Django无法理解 Celery Tasks 与 Django 的关系
【发布时间】:2017-09-26 00:52:56
【问题描述】:

我正在使用 Django 来收听语音命令。我打算使用 Celery 作为一种方式来运行一个单独的进程来监听,以及一个单独的进程来执行命令。

当我使用 Celery 设置 Django 时,我曾设想启动 Django (./manage.py runserver) 并让这两个进程在启动时启动。

但到目前为止,我看到 Celery 应用程序是通过 shell 启动的,而 Django 单独与它对话。

我在这里学习曲线的很大一部分是了解 Django 与 Celery 之间的关系。我原本打算让所有东西都在 Django 环境中运行——即,不让 Django 在 Celery 旁边运行。

谁能告诉我我在哪里变得困惑?

【问题讨论】:

    标签: python django asynchronous celery


    【解决方案1】:

    Celery 是一个独立的进程,django 连接到套接字并通过套接字进行通信。这意味着 celery 不会在同一进程中运行。您必须将 celery 作为一个单独的进程启动,并添加“工人”,这些“工人”将从队列中读取消息并处理工作负载。在 django celery 文档的末尾,它向您展示了如何启动 celery worker: http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#starting-the-worker-process

    同一页面有一些关于如何开始使用 celery 的很好的教程:

    http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#first-steps

    【讨论】:

    • 不,通信不会通过套接字进行。它通过代理发生:例如 RabbitMQ 或 Redis。
    • 嗯,这两个都是基于套接字的通信。它确实通过您选择的经纪人发生。
    猜你喜欢
    • 2013-04-07
    • 2014-07-27
    • 2018-12-18
    • 1970-01-01
    • 2021-12-01
    • 2012-06-24
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多