V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
piaochen0
V2EX  ›  Python

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

  •  
  •   piaochen0 · Oct 19, 2021 · 3281 views
    This topic created in 1664 days ago, the information mentioned may be changed or developed.

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

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

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

    麻烦各位赐教。

    3 replies    2021-10-19 16:16:34 +08:00
    676529483
        1
    676529483  
       Oct 19, 2021
    我觉得看你怎么启动 django 吧
    wsgi 模型启动,因为有多个 worker,最好还是走 celery 这样单独的进程;
    asgi 启动,就像 lz 说的注册回调就行,注意处理断连的问题
    encro
        2
    encro  
       Oct 19, 2021
    自定义 django 命令行,启动 worker,然后将 worker 使用 supervisord 运行,是标配吧。
    neoblackcap
        3
    neoblackcap  
       Oct 19, 2021
    wsgi 模型不支持你这玩,你要这样玩,其实是要求 wsgi server 支持进程管理。uwsgi 可以帮到你。也许 asgi 也可以做到,不过得看你的代码,如果按 wsgi 模式写的同步代码,建议上 uwsgi 解决这个订阅问题就算了。事实上相当于两个独立进程
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1238 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 17:29 · PVG 01:29 · LAX 10:29 · JFK 13:29
    ♥ Do have faith in what you're doing.