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

问题描述 投票:1回答:1

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',
        })
django startup django-channels
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.