【问题标题】:Could Django-channels co-exists with celeryDjango-channels 可以与 celery 共存吗
【发布时间】:2017-05-15 21:18:11
【问题描述】:

如果我用 Django-channels(nginx + 频道,我喜欢它的 websocket 功能)组成一个站点,我还能像其他普通的 django 项目一样添加一些在后台运行的 celery 应用程序/任务吗?

【问题讨论】:

  • 当然,你为什么不能呢?
  • 谢谢。我以为 Django-channel 使用了另一个 wsgi 服务器,然后 Celery 可能无法压缩。
  • Channels 使用 asgi 而不是 wsgi,但是 celery 是一个独立的进程,它不关心你使用哪个服务器。

标签: django celery channels


【解决方案1】:

是的,你可以同时使用。

例如https://vincenttide.com/blog/1/django-channels-and-celery-example/

  • 在浏览器端

你创建websocket,服务器发送实时消息。

https://github.com/VincentTide/django-channels-celery-example/blob/6ddc5ace0e1b99031ad0505ba0ec20be3f87704d/templates/jobs/index.html#L73

  • 在消费者方面

您收到请求,创建任务(并告诉要回复哪个频道)。

@channel_session
def ws_receive(message):
    job.delay(message.reply_channel.name)
  • 在芹菜工人中

你收到任务,运行它。并通过daphne向浏览器发送实时消息。

@app.task
def job(reply_channel):
    Channel(reply_channel).send({
        "text": json.dumps ({
            "action": "completed",
        })
    })

【讨论】:

    【解决方案2】:

    答案是 。 Celery 是一个不同的独立过程。你可以像在 Django 中使用 celery 一样使用 django-channels 和 celery。

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多