我有一個腳本每秒向服務器發送5-10次請求。我擁有的最重要的要求是每秒請求數的限制。它必須始終是具體的數字,不能更多也不能少。要做到這一點,我發送請求後給定的時間間隔(減去發送前一個請求所需的時間)。加快套接字發送行爲(使用Python)
問題:某些請求發送速度不夠快,但其他請求在sock.sendall()步驟中花費太多時間。我相信這是因爲發送緩衝區已滿並且執行被阻止,直到緩衝區被清除。
我該怎麼做才能更快地刷新緩衝區?
一個我所嘗試的選項是禁用的Nagle:
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
,但它似乎沒有改善的事情。
另一種聽起來太錯誤的方法是在每個sendall()調用之前將發送緩衝區設置爲請求的長度。
有什麼我可以做到每秒獲得更多可預測的請求?
我剛纔想到的另一個選項:有幾個進程每秒會做少量的請求,希望它會使結果更可預測。
有問題的操作系統是Centos。
更新:這似乎是我在連接後設置套接字選項的錯誤。看起來只能在connect()調用之前設置大小緩衝區。與TCP_NODELAY相同。還沒有時間來測試它是否有所作爲。
其中一些可能無法控制,這是由於網絡問題或服務器端的限制。 – Keith