我有一個應用程序通過TCP連接接收數據並將其寫入postgres數據庫。然後,我使用django web前端爲這些數據提供gui。由於django提供了有用的數據庫訪問方法,我的TCP接收器也使用django模型寫入數據庫。分叉Django數據庫連接
我的問題是我需要使用分叉的TCP服務器。在子進程和父進程中共享句柄的分叉結果。我讀過Django不支持分叉,而且實際上共享數據庫連接導致了問題,例如這些異常:
DatabaseError:SSL錯誤:解密失敗或不良記錄MAC
InterfaceError:連接已經關閉
什麼是使分叉TCP服務器工作的最佳解決方案?
- 我可以確保分叉進程使用自己的數據庫連接嗎?
- 我應該看看其他模塊寫入postgres數據庫嗎?
什麼問題,你確切地解決與分叉? –
我的主要原因是速度和韌性。該服務器正在處理大量數據,並且線程切換在一分鐘內是一個限制。多進程意味着沒有GIL問題(我知道套接字操作在釋放GIL時阻塞,但後處理一次只能在一個線程中發生)。 – Dave
我會通過eventlet或gevent使用綠色線程,除非您嚴重受CPU限制。 eventlet和gevent都有機制讓Postgres在很多併發連接上表現出色。這是一個選擇嗎? –