我需要在Python中編寫一個類似於程序的代理,工作流程與Web代理非常相似。該程序位於客戶端和服務器之間,包含客戶端發送給服務器的請求,處理該請求,然後將其發送到原始服務器。當然,使用的協議是使用TCP的私有協議。混合Python與多處理扭曲?
爲了儘量減少工作量,我想使用Python Twisted來處理請求接收(該部分充當服務器)和重新發送(該部分充當客戶端)。爲了獲得最大的性能,我想使用python multiprocessing(線程具有GIL限制)將程序分成三個部分(進程)。第一個進程運行Twisted接收請求,將請求放入隊列中,並立即返回成功到原始客戶端。第二個進程從隊列中獲取請求,進一步處理請求並將其放入另一個隊列。第三個進程從第二個隊列獲取請求並將其發送到原始服務器。
我是Python的新角色Twisted,我知道它是事件驅動的,我也聽說最好不要將Twisted與線程或多處理混合在一起。所以我不知道這種方式是否合適,或者是否有更簡單的方法,只需使用Twisted?
我懷疑使用3個進程,而不是1是多餘的。第一個和最後一個進程不會執行任何CPU綁定處理......它們只是IO綁定。通過實際將所有內容放入一個沒有線程和只有異步/事件庫邏輯的Twisted reactor進程中,您可能會獲得更好的可維護性和更好的執行結果。 – 2012-03-22 13:43:10