Django渠道可以与芹菜共存

时间:2017-01-01 12:25:31

标签: django celery channels

如果我用Django-channels构建一个站点(nginx + channel,我喜欢它的websocket能力),我还能在其他正常的django项目中添加一些在后台运行的芹菜应用/任务吗?

2 个答案:

答案 0 :(得分:4)

是的,你可以同时使用它们。

例如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",
        })
    })

答案 1 :(得分:1)

答案是 。芹菜是一个不同的独立过程。你可以使用django-channels和芹菜,就像你会使用芹菜和Django一样。