【发布时间】:2012-07-09 11:01:28
【问题描述】:
我能否以某种方式将响应对象从一个进程“移动”到另一个进程?
第一个进程是一个非阻塞服务器,它执行一些其他的 IO。它需要在 Tornado 或 Twisted 等非阻塞环境中完成。
使用 PIL 处理图像需要另一个进程(实际上是“工作”进程池)。由于 GIL,我无法在线程中执行此操作。但是,工作人员需要获取响应对象的文件句柄来写入结果,或者它应该将结果返回给第一个进程,并且由于结果可能非常大(~1 mb),它不会似乎是个好主意。 (它可能是一个单独的进程池,而不是每个请求的分叉 - 后一个似乎是一个糟糕的策略)
那么,我可以让工作进程直接写入响应吗?
【问题讨论】:
-
也许我遗漏了一些东西,但为什么不写入实际文件,并在响应处理程序中读取呢?然后你只需要传递给图像处理器的文件路径。
-
让不同的线程/进程从头到尾处理不同的请求不是更自然吗?
-
@NicolaMusatti 因为图像处理似乎一直在阻塞 IO
-
@AntonStrogonoff 那是写+读+写,而我可以用我的方案写
-
@AntonStrogonoff 而不是那样,如果其他一切都失败了,我只会从一个服务器进程到另一个服务器进程执行 X-Accel-Redirect
标签: python events io response multiprocessing