我需要一個TCP套接字客戶端連接到服務器來發送數據和接收。 但是,此套接字必須始終打開,我無法打開另一個套接字。Python的TCP套接字客戶端
我總是有一些數據要發送,然後再處理之前發送的數據的答案。
如果我可以打開很多套接字,我認爲它更容易。但在我的情況下,我不得不異步地在同一個套接字上發送所有內容。
所以問題是,你建議在Python生態系統中使用什麼? (扭曲,龍捲風等) 我應該考慮Node.js還是其他選項?
我需要一個TCP套接字客戶端連接到服務器來發送數據和接收。 但是,此套接字必須始終打開,我無法打開另一個套接字。Python的TCP套接字客戶端
我總是有一些數據要發送,然後再處理之前發送的數據的答案。
如果我可以打開很多套接字,我認爲它更容易。但在我的情況下,我不得不異步地在同一個套接字上發送所有內容。
所以問題是,你建議在Python生態系統中使用什麼? (扭曲,龍捲風等) 我應該考慮Node.js還是其他選項?
我強烈建議您發送爲此扭曲:
ReconnectingClientFactory
將處理斷開連接並使用指數回退,並且LoopingCall
可以很容易地實現心跳。我有一個與您所提到的服務完全相同的服務(單一登錄,始終保持,處理數據)。它已經持續了幾個月,像冠軍一樣工作。
扭曲可能很難讓你的頭,但教程here是一個很好的開始。瞭解Twisted將從長遠來看讓你走得更遠!
「我要送都在同一插座異步的」
您將數據添加到隊列中,有一個單獨的線程,取放物品從隊列中,並通過socket.send()
我不認爲這是一個很好的做法,保持你的套接字在線,爲什麼你不能只是在另一個部分獲得數據處理,並再次打開一個套接字? –
我會盡力解釋。這是服務器的要求。該服務器處理命令併發回答案。當我打開一個新的連接時,我需要用一個ID標識自己(我只有一個ID可用)。在任何給定時間,我只能使用此ID的一個套接字連接。我試圖找出發送大量命令並處理答案的最佳方式。 – balsagoth
它聽起來像你正在與之通信的服務器在TCP之上定義了一個協議。你能解釋一下你正在使用的服務器程序嗎? – SingleNegationElimination