2012-07-09 42 views
1

我能否以某种方式将响应对象从一个进程“移动”到另一个进程?在一个Python进程中接收HTTP请求,从另一个进程回复

第一个进程是一个非阻塞服务器,它执行其他一些IO。它需要在像Tornado或Twisted这样的非阻塞环境中完成。

需要使用PIL处理图像时需要使用另一个进程(实际上是“工作者”进程池)。由于GIL,我无法在线程中执行此操作。然而,工作人员需要获得响应对象的文件句柄以将结果写入结果,或者它应该将结果返回给第一个进程,并且由于结果可能非常大(〜1 MB),所以不会似乎是一个好主意。 (这可能是一个独立的进程池,而不是每个请求的分叉点 - 后者似乎是一个糟糕的策略)

因此,我可以以某种方式允许工作进程直接写入响应?

+0

也许我错过了一些东西,但为什么不写入实际的文件,并在响应处理程序中读取?那么你只需要传递给图像处理器文件路径。 – Tony 2012-07-09 11:16:09

+0

从不同的线程/进程提供不同的请求开始到结束不是更自然吗? – 2012-07-09 11:19:27

+0

@NicolaMusatti因为图像处理似乎一直在阻止IO – 2012-07-09 11:27:43

回答

0

你不能。一次只能有一个进程访问一个端口,并且无法访问该端口就无法直接进行响应。

但你不需要那样。你需要的是代理!你可以添加一个线程到你的应用程序,它将在不同的端口上侦听。然后,您启动您的图像过程,并在该过程完成其工作时,您可以将结果发送到端口。然后你线程会读取它并发送响应。

相关问题