Python grequest没有';不能快速一致地发送请求

Python grequest没有';不能快速一致地发送请求,python,python-requests,gevent,greenlets,grequests,Python,Python Requests,Gevent,Greenlets,Grequests,我在Python2.7中编写了一个TCP代理服务器,它使用gevent为每个连接创建一个greenlet。当插座关闭时,我关闭绿色插座。我使用它来发布给定连接接收的数据。我使用grequests是因为我希望greenlet在等待对帖子的HTTP响应时能够让步 当我测试仅使用一个连接在本地运行的服务器时,有时从我映射grequest到urllib3记录它正在启动连接,需要花费0.5秒的时间。它是不一致的,大多数情况下它在0.05秒内发出请求,但有时会更长 我正在记录从我告诉grequests发出请

我在Python2.7中编写了一个TCP代理服务器,它使用gevent为每个连接创建一个greenlet。当插座关闭时,我关闭绿色插座。我使用它来发布给定连接接收的数据。我使用grequests是因为我希望greenlet在等待对帖子的HTTP响应时能够让步

当我测试仅使用一个连接在本地运行的服务器时,有时从我映射grequest到urllib3记录它正在启动连接,需要花费0.5秒的时间。它是不一致的,大多数情况下它在0.05秒内发出请求,但有时会更长

我正在记录从我告诉grequests发出请求所花费的时间以及请求报告的经过时间。此外,我正在给所有日志添加时间戳,因此我可以在日志中看到有时存在很大的时间间隔

以下是代码在服务器上的外观:

req = grequests.post(endpoint, data=json.dumps(body), headers=headers, timeout=1)
a = time.time()
socket_log_debug(address, context, "Starting post...")
grequests.map([req])
b = time.time()
socket_log_info(address, context, "Time1: {}".format(b-a))
socket_log_info(address, context, "Time2: {}".format(req.response.elapsed.total_seconds()))
这是一个需要很长时间才能发布的结果日志示例:

tcp-app: 17-04-04 12:24:38.432 root DEBUG: connection=49416, serialnum=TST-000, message='Starting post...'
tcp-app: 17-04-04 12:24:38.843 requests.packages.urllib3.connectionpool DEBUG: Starting new HTTPS connection (1): xxxxxxxxxxxxxxx
tcp-app: 17-04-04 12:24:39.509 requests.packages.urllib3.connectionpool DEBUG: xxxxxxxxxxxxxxx "POST /xx HTTP/1.1" 200 0
tcp-app: 17-04-04 12:24:39.510 root INFO: connection=49416, serialnum=TST-000, message='Time1: 1.0784201622'
tcp-app: 17-04-04 12:24:39.510 root INFO: connection=49416, serialnum=TST-000, message='Time2: 0.669282'

为什么请求有时需要这么长时间才能发出?当端点的响应速度也很慢(平均值为0.6s)时,似乎会发生这种情况,但我不确定它们是否相关或为什么相关。

我不确定,但猴子补丁不是为此设计的吗?我是说你为什么需要另一个图书馆?如果我做得不对,我很抱歉。但如果我是对的,那么你应该有很好的信息在这里-grequests使用猴子补丁;实际上,它是在链接到的线程中推荐的。据我所知,它只是一个经过良好测试和使用良好的异步请求包装器。我在没有grequests的情况下运行了相同的测试(猴子自己修补),得到了相同的结果。这通常是最慢的吗?