如何让 cgi 提交后运行一个后台任务,然后后台立刻返回呢?

2016-02-05 23:23:55 +08:00
 yangyaofei

最近做个小东西,希望前台添加一个任务给后台 cgi,后台返回任务添加完成,然后后台那个进程就自己跑,直到完成,却怎么都不行.我 fork 之后 exec,cgi 还是会等待后台进程结束才会返回数据.

我看不行,直接 fork 之后把后台进程变成守护进程,结果还是不行.......

有人说是因为子进程有标准输入输出,所以不行,我全关闭了,还是不行.....

我使用 python 写的代码如下

https://gist.github.com/yangyaofei/3610de01ba100e930e66

还有一个办法就是后台一直有一个进程,每次有请求的时候执行的脚本给这个进程发信号,这个进程再去做任务,这样好麻烦啊~~实在不行只能那样了是么.......

4213 次点击
所在节点    程序员
23 条回复
zyAndroid
2016-02-08 15:02:06 +08:00
你需要个任务队列来做这种事情
yangyaofei
2016-02-08 19:01:31 +08:00
@zyAndroid 哦~~我已经自己在造轮子了......用 socket 做个守护进程还行,反正我用的简单,自己实现了,要是以后不行了,在用那个吧 谢谢 长知识了
leeyiw
2016-02-08 23:42:42 +08:00
如果用 Python 的话可以试试 Celery ,就是可能重了点。

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

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

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

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

© 2021 V2EX