我試圖同時發送請求到服務器,然後使用此代碼記錄的平均等待時間:每秒發送更多than1000請求在python
import Queue
import time
import threading
import urllib2
data = "{"image_1":"abc/xyz.jpg"}"
headers = {.....}
def get_url(q, url):
num = 1
sum = 0
while num <= 200:
start = time.time()
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
end = time.time()
print end - start
num = num + 1
q.put(response.read())
sum = sum + (end - start)
print sum
theurls = ["http://example.com/example"]
q = Queue.Queue()
for u in theurls:
t = threading.Thread(target = get_url, args = (q, u))
t.daemon = True
t.start()
while True:
s = q.get()
print s
該代碼工作得很好,但現在我打算每秒發送超過1000個請求。我遇到了this answer,但我不知道如何使用grequests
作爲我的情況。一些見解將會非常有幫助。
謝謝
這裏任何見解傢伙.. –
可能是你可以看看到異步架構像[aiohttp](http://aiohttp.readthedocs.io/en/stable/)在python內置asyncio的頂部?在這裏或網上有一些很好的帖子(如https://compiletoi.net/fast-scraping-in-python-with-asyncio/或http://aosabook.org/en/500L/a-web-crawler -with-asyncio-coroutines.html或https://magic.io/blog/uvloop-blazing-fast-python-networking/)關於使用aiohttp進行幾個(幾乎是併發的)請求。 – mgc
查看存儲庫中的一些示例。 https://github.com/kennethreitz/grequests – 0xcaff