在特定时间发送Http请求

时间:2015-06-09 16:19:18

标签: python http network-programming

我正在开发一个通过https请求与服务器通信的应用程序。我需要一条消息在非常狭窄的时间窗口中命中服务器。我知道这个时间窗口的开启时间只有半秒的精度。我可以在之前和之后尽可能多地重复http请求,这没关系。

目前,我在做什么:

  • 我将Python与请求和gevent模块一起使用
  • 我使用连接池为1000连接的httpadapter创建请求会话
  • 我会在时间窗口的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等)。
  • 知道如何做得好吗?

1 个答案:

答案 0 :(得分:0)

我最终直接使用套接字模块,因此控制较低级别的行为,并且它工作正常。请求模块很棒,但为这个特定问题增加了太多的延迟。