在django视图中分叉进程

时间:2014-01-06 20:28:06

标签: python django asynchronous subprocess

我有一个Web服务启动一个可能需要一分钟的过程。我想返回一个有效地说“我已经成功得到你的请求”的204,但是在后台运行缓慢的过程。

我试图通过分支这样的另一个过程来做到这一点:

p = Process(target = modelObj.slowProcess) 
p.start()
logger.debug('sending 204')
return HttpResponse( status=204)

这部分代码似乎执行得很好,但正在绊倒django组件。打印调试语句,并执行该过程,但是当我查看chrome的调试器中的网络流量时,它表示上传状态被“取消”。由于我没有在浏览器端取消该事件,我认为这意味着连接已经死亡。我从来没有从服务器得到任何回复,所以我似乎在某种程度上破坏了请求过程。

我如何分叉这个单独的流程并仍然交付204?

1 个答案:

答案 0 :(得分:1)

评论向我展示了我做错了什么。

有问题的请求来自上传文件的隐藏iframe。在许多情况下,您可以将其视为ajax请求,但如果iframe返回204,则会出现问题。 iframe必须返回一些内容事件,尽管没有对该内容进行任何实质性操作。