目前项目是基于 Django 的,
现在接到一个需求,需要从 RocketMQ 中取消息,然后根据取到的消息处理数据入数据库。
现在打算在 django 启动初始化的时候,例如 settings 的__init__.py 中,
使用 PushConsumer 订阅 RocketMQ 中的主题,绑定一个回调的方法。
这样就不关闭这个连接了。
这样做会不会有什么弊端和问题?
之前考虑过单独像 celery 那样搞一个单独的进程来启动监听,
但是感觉这样太麻烦了,
就想直接在 Django 项目初始化的时候,启动订阅。
麻烦各位赐教。
1
676529483 2021-10-19 09:57:25 +08:00
我觉得看你怎么启动 django 吧
wsgi 模型启动,因为有多个 worker,最好还是走 celery 这样单独的进程; asgi 启动,就像 lz 说的注册回调就行,注意处理断连的问题 |
2
encro 2021-10-19 10:01:15 +08:00
自定义 django 命令行,启动 worker,然后将 worker 使用 supervisord 运行,是标配吧。
|
3
neoblackcap 2021-10-19 16:16:34 +08:00
wsgi 模型不支持你这玩,你要这样玩,其实是要求 wsgi server 支持进程管理。uwsgi 可以帮到你。也许 asgi 也可以做到,不过得看你的代码,如果按 wsgi 模式写的同步代码,建议上 uwsgi 解决这个订阅问题就算了。事实上相当于两个独立进程
|