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
)并创建一个全局变量以检查它是否是第一次调用设置代码。它有效,因为它是相同的过程。
我还在寻找更清洁的解决方案。