Django:通过websocket定期发送更新



我们目前正在使用django和django-omnibus (websockets)开发一个应用程序。我们需要通过websockets定期从服务器(django)发送更新到所有连接的客户端。

问题是,我们不能使用cron或相关的东西来做这项工作。我写了一个manage.py命令,但由于一些限制,似乎omnibus不能发送消息到websocket,如果通过python manage.py updatclients启动。

我知道django不是为这种东西设计的,但是有一种方法可以在运行的django实例本身发送更新吗?

谢谢你的帮助!

您不能使用cron的原因是因为您的主机环境没有cron吗?…还是因为"如果python manage.py启动器,omnibus似乎无法将消息发送到websocket " ?

如果你根本没有cron,那么你需要找到一个替代品,如https://apscheduler.readthedocs.org/en/latest/或芹菜也提供计划任务。

但是如果问题在另一边:"在运行的django实例中发送更新的方法",那么我建议一个简单的选择是在你的django应用程序中添加一个HTTP API。

例如:

# views.py
from django.core.management import call_command
def update_clients(request):
    call_command('updateclients')
    return HttpResponse(status=204)

然后在crontab上你可以这样做:

curl 127.0.0.1/internalapi/update_clients

…这样,你的updateclients代码就可以在Django实例中运行,这个Django实例与综合龙卷风服务器有活跃的连接。

你可能想对这个url进行一些访问控制,要么通过你的web服务器,要么像这样:
https://djangosnippets.org/snippets/2095/

相关内容

  • 没有找到相关文章

最新更新