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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在django渠道服务器启动时一次运行代码?相关的知识,希望对你有一定的参考价值。

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',
        )
答案

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

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

以上是关于如何在django渠道服务器启动时一次运行代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复:Xcode 9 构建循环直到退出代码 255

从文件中读取时一次跳过空格

XCode 5:打开应用程序时一次又一次崩溃

故障处理141119一次数据库不繁忙时一条sql语句2个运行计划导致业务超时的故障处理

手机上安装同一款游戏的两个不同渠道会不兼容吗?

django shell启动时如何运行任意代码?