如何在django渠道服务器启动时一次运行代码?

时间:2018-02-16 16:26:17

标签: django startup django-channels

Django 1.7+有AppConfig.readydocs),但它似乎与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',
        })

1 个答案:

答案 0 :(得分:0)

这不是一个非常干净的解决方案,但以下工作:使mychannel由单个工作人员处理(对其他工作人员使用--exclude-channels=mychannel)并创建一个全局变量以检查它是否为'是第一次调用设置代码。它有效,因为它是相同的过程。

我还在寻找更清洁的解决方案。