Django-channels可以与芹菜共存吗
Could Django-channels co-exists with celery
如果我用 Django-channels(nginx + channels,我喜欢它的 websocket 能力)组成一个网站,我还能像其他普通的 django 一样在后台添加一些 celery app/tasks 运行项目?
答案是是。 Celery 是一个不同的独立进程。您可以使用 django-channels 和芹菜,就像将芹菜与 Django 一起使用一样。
是的,您可以同时使用两者。
例如https://vincenttide.com/blog/1/django-channels-and-celery-example/
- 在浏览器端
您创建websocket,服务器发送实时消息。
- 消费者端
您收到请求,创建任务(并告诉哪个频道回复)。
@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",
})
})
如果我用 Django-channels(nginx + channels,我喜欢它的 websocket 能力)组成一个网站,我还能像其他普通的 django 一样在后台添加一些 celery app/tasks 运行项目?
答案是是。 Celery 是一个不同的独立进程。您可以使用 django-channels 和芹菜,就像将芹菜与 Django 一起使用一样。
是的,您可以同时使用两者。
例如https://vincenttide.com/blog/1/django-channels-and-celery-example/
- 在浏览器端
您创建websocket,服务器发送实时消息。
- 消费者端
您收到请求,创建任务(并告诉哪个频道回复)。
@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",
})
})