[求助] mod_wsgi 中调用 function 或 .py 并完全脱离主进程

2016-03-23 00:27:22 +08:00
 terence4444
需要一个公众号功能,我需要多执行一会时间,但由于微信有响应时间要求,不然服务器会发三遍请求。
设想是先返回一个 success 给微信服务器,并在新进程里继续执行到完成为止。
也就是在 mod_wsgi 中调用某个 function 或者 subprocess.Popen 一个 .py 文件并完全脱离主进程运行。

要求:
第一步:接收信息
第二步:调用 function
第三步:返回空信息
第四步:主进程结束处理( function 仍在继续运行,结束后自行退出)

尝试:
1. 直接调用 function :由于第二步执行时间过长,微信服务器发 N 遍请求过来,导致重复执行。
2. 使用 subprocess.Popen 一个 .py 文件,在 .py 文件中调用那个 funtion 。主进程会等待 subprocess 返回,和 1. 的效果一样。
3. 使用 multiprocessing.Process target = function 这个更糟,不但不会继续执行第三步,还会弹出 Apache 的 httpd.exe ,调用一次 Process 弹一个新 httpd.exe
4. 使用 multiprocessing.Pool 和 3 一样,进程池有多大就开几个 httpd.exe
2039 次点击
所在节点    Python
4 条回复
virusdefender
2016-03-23 08:22:35 +08:00
你需要的是异步队列 celery 或者 rq
terence4444
2016-03-23 14:02:36 +08:00
@virusdefender 感谢 回头我再试试
ljdawn
2016-03-23 14:56:08 +08:00
subprocess
terence4444
2016-03-23 17:38:33 +08:00
@ljdawn 在 wsgi 里 subprocess 好像不一样…

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

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

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

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

© 2021 V2EX