Django 项目如何订阅消费 MQ 的消息?

2021-10-19 09:52:23 +08:00
 piaochen0

目前项目是基于 Django 的,
现在接到一个需求,需要从 RocketMQ 中取消息,然后根据取到的消息处理数据入数据库。

现在打算在 django 启动初始化的时候,例如 settings 的__init__.py 中,
使用 PushConsumer 订阅 RocketMQ 中的主题,绑定一个回调的方法。
这样就不关闭这个连接了。 这样做会不会有什么弊端和问题?

之前考虑过单独像 celery 那样搞一个单独的进程来启动监听,
但是感觉这样太麻烦了,
就想直接在 Django 项目初始化的时候,启动订阅。

麻烦各位赐教。

2683 次点击
所在节点    Python
3 条回复
676529483
2021-10-19 09:57:25 +08:00
我觉得看你怎么启动 django 吧
wsgi 模型启动,因为有多个 worker,最好还是走 celery 这样单独的进程;
asgi 启动,就像 lz 说的注册回调就行,注意处理断连的问题
encro
2021-10-19 10:01:15 +08:00
自定义 django 命令行,启动 worker,然后将 worker 使用 supervisord 运行,是标配吧。
neoblackcap
2021-10-19 16:16:34 +08:00
wsgi 模型不支持你这玩,你要这样玩,其实是要求 wsgi server 支持进程管理。uwsgi 可以帮到你。也许 asgi 也可以做到,不过得看你的代码,如果按 wsgi 模式写的同步代码,建议上 uwsgi 解决这个订阅问题就算了。事实上相当于两个独立进程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/808748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX