2015-09-28 2 views
0

Как я могу отправить как 1000 запросов самым быстрым способом? Я знаю, что вы можете отправить запрос с несколькими grequests:Python: Как я могу отправить несколько HTTP-запросов и получить ответ?

urls = [ 
    'sample.url/1', 
    'sample.url/2', 
    ... 
] 
request = (grequests.get(u) for u in urls) 
print grequests.map(request) 

Но возвращение не содержание. Что мне нужно, чтобы получить данные в формате JSON, поэтому, например, что-то вроде этого:

request = (grequests.get(u) for u in urls) 
content = grequests.json(request) 

ответ

2

возвращенные детали не содержание, но они включают в себя содержание. Вы можете получить все содержимое следующим образом:

result = grequests.map(request) 
content = '\n'.join(r.content for r in result) # raw content 
text = '\n'.join(r.text for r in result)  # decoded content 

Вы можете разобрать JSON как это:

result = grequests.map(request) 
json = [r.json() for r in result] 

Пример программы:

import grequests 
import pprint 

urls = [ 
    'http://httpbin.org/user-agent', 
    'http://httpbin.org/headers', 
    'http://httpbin.org/ip', 
] 

requests = (grequests.get(u) for u in urls) 
responses = grequests.map(requests) 

json = [response.json() for response in responses] 
pprint.pprint(json) 

text = '\n'.join(response.text for response in responses) 
print(text) 
+0

Спасибо большое, то будет отлично работает. – cbl