如何在 flask 启动的时候同时也顺带启动其他 Python 代码

2017-07-31 16:51:46 +08:00
 lispmacro

用 flask 写了几个 restful 接口, 同时我又有一段 rabbitmq 的消息消费代码, 我想把 rabbitmq 的消息消费代码放到 flask 中, 随 flask 启动应该怎么搞?

if __name__ == '__main__':
    app.run()
    msg_comsue)

上面这种方式不行, 因为我是用 tornado 来调 app 的.

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from run import app

http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000) 
IOLoop.instance().start()
2558 次点击
所在节点    Python
3 条回复
wellsc
2017-07-31 16:56:54 +08:00
写个启动函数,在 if __name__ == "__main__": 里面调用
ryd994
2017-07-31 17:34:55 +08:00
你这样混着当然不行

tornardo 假设你的代码就是个干净的无状态的 web app,取决于你的设置,可能多线程或多进程跑。
嵌的 msg_consume 要防止竞态就需要跨进程通讯,这会很恶心
建议分离出来,我猜 msg_comsue 就是隔段时间检查是吧,做个 /msg_comsue 请求触发相应函数,做好安全限制本地访问,然后 cron 访问就好

如果需要性能 /更复杂,用队列,比如 celery。另外启动后端处理
CryMeatel
2017-07-31 18:58:28 +08:00
多线程 /多进程异步掉~ 如果需求更复杂,上 Celery 等工具吧

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

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

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

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

© 2021 V2EX