如何在django渠道服务器启动时一次运行代码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在django渠道服务器启动时一次运行代码?相关的知识,希望对你有一定的参考价值。
Django 1.7+有AppConfig.ready
(docs),但它似乎与Django频道一起运行多次。即使有多个工作人员,我怎样才能确保代码只运行一次?我正在寻找一个适用于开发服务器和daphne的解决方案。
这是我想要实现的目标:
from django.apps import AppConfig
from channels import Channel
class MyAppConfig(AppConfig):
name = 'myapp'
def ready(self):
# if thisIsTheFirstWorker:
Channel('mychannel').send(
'text': 'message to be sent only once',
)
答案
这不是一个非常干净的解决方案,但以下工作:使mychannel
由单个工作者处理(在其他工作者上使用--exclude-channels=mychannel
)并创建一个全局变量以检查它是否是第一次调用设置代码。它有效,因为它是相同的过程。
我还在寻找更清洁的解决方案。
以上是关于如何在django渠道服务器启动时一次运行代码?的主要内容,如果未能解决你的问题,请参考以下文章