我有一个Web服务,它会启动一个过程,该过程可能需要一分钟的时间。我想返回一个204,上面写着“我已成功收到您的请求”,但在后台运行了缓慢的过程。
我试图通过分叉这样的另一个过程来做到这一点:
p = Process(target = modelObj.slowProcess)
p.start()
logger.debug('sending 204')
return HttpResponse( status=204)
这部分代码似乎执行得很好,但是使django组件崩溃了。将打印debug语句,然后执行该过程,但是当我查看chrome调试器中的网络流量时,它说上传状态为“已取消”。由于我尚未在浏览器端取消该事件,因此我认为这意味着连接已终止。我从服务器再也没有收到任何响应,所以看来我在某种程度上打破了请求流程。
我如何分叉该单独的过程,但仍要交付204?
最佳答案
这些评论告诉我我做错了什么。
有问题的请求来自正在上传文件的隐藏iframe。在许多情况下,您可以将其视为ajax请求,但是如果iframe传回204,就会出现问题。尽管该内容并未做任何实质性的工作,但iframe必须获取一些内容事件。
关于python - 在Django View 中 fork 进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20958666/