2015-06-09 108 views
1

我正在開發一個通過https請求與服務器通信的應用程序。我需要一條消息在非常窄的時間窗口內擊中服務器。我知道這個時間窗口的開放時間只有半秒的精確度。我可以像前後那樣重複http請求,這並不重要。在特定時間發送Http請求

現在,這裏是我在做什麼:

  • 我使用Python與請求和GEVENT模塊
  • 我創建了一個請求會話,使用httpadapter與1000個連接
  • 連接池我在時間窗口周圍1秒內發送儘可能多的訂單。

    self.session = requests.Session() 
    self.session.mount('https://', requests.adapters.HTTPAdapter(pool_connections=100, 
                      pool_maxsize=10000)) 
    def sendRequest() 
        self.session.post(self.url, self.body) 
    
    pool = gevent.pool.Pool(size = 10000) 
    while time.time() < endTime: 
        g = pool.spawn(sendRequest) 
        gevent.sleep(0.0000001) 
    

不過,我一直失蹤的窗口,這是很窄的。我的代碼似乎只發送2毫秒的http請求,即使我增加池大小或 我試圖提高我發送消息的速度,以增加碰撞窗口的機會。但是,我不知道如何去做這件事。

我在想:

  • 是網卡的瓶頸?
  • python是瓶頸嗎?
  • 我是否在我的代碼(https連接池的大小,使用gevent等)做了次優的事情
  • 任何想法如何做到這一點呢?

回答

0

我結束了直接使用套接字模塊,所以控制行爲在較低的水平,它的工作。請求模塊很好,但是對這個特殊問題增加了太多的延遲。