2010-10-25 44 views
1

在Windows上部署CPU綁定Python-WSGI應用程序有哪些選擇?在Windows上爲CPU綁定應用程序部署Python WSGI

應用程序從多個CPU(圖像處理/編碼)中受益匪淺,但GIL阻止它使用它們。

我的理解是:

  • mod_wsgi的有在Windows和Apache本身WSGIDaemonProcess沒有隻支持一個過程

  • 所有叉子基礎的解決方案(flup,產卵,gunicorn)只運行工作的unix

是否有其他部署選項我缺少?

PS:我asked that on serverfault但有人建議在這裏問。

回答

1

我已成功使用isapi-wsgi在Windows IIS上部署WSGI Web應用程序(我假設因爲您在Windows上部署,IIS是一個選項)。

創建IIS應用程序池以將您的應用程序託管並配置爲Web Garden(屬性|性能|最大工作進程數)。免責聲明:我從來沒有使用過這個功能(我一直使用默認的應用程序池配置,其中工作進程的最大數量是1)。但我的理解是,這將啓動更多的流程來處理請求。

+0

不,IIS不是一個選項,它應該與Apache(本地或通過FastCGI/HTTP)一起使用。 – olt 2010-10-25 08:06:28

+0

那麼,因爲在Windows上的Apache只支持一個多線程的進程,所以我猜如果你想從多個CPU中受益的話,你不能在Apache中託管你的應用程序。也許在IIS中託管您的應用程序,並從Apache反向代理? – codeape 2010-10-25 20:01:20

0

這會有點混亂,但你可以使用子進程模塊來自己觸發工作進程。我很確定Popen.wait()和/或Popen.communicate()應該釋放GIL。儘管如此,你仍然需要創建流程,所以你可能不會獲得比標準CGI更多的東西。

另一種選擇是讓獨立的服務器/工作進程運行整個時間並使用某種形式的IPC,但這不是一個簡單的選擇。看看多處理模塊,也可能是Pyro。

相關問題