import grequests
import time
start_time = time.time()
sites = ['https://facebook.com' for x in range(5)]
data = {'a': 'b'}
responses = [grequests.get(u, data=data) for u in sites]
for response in responses:
print(response)
print(f'{response.text}')
print("--- %s seconds ---" % (time.time() - start_time))
当我尝试通过.text
方法获取数据时,我有一个错误:
AttributeError: 'AsyncRequest' object has no attribute 'text'
即使我试图获得status_code
,我也有相同的错误,缺少属性
修复我搜索pip3 install --upgrade gevent==1.1rc3
返回错误的命令:fatal error: Python.h: No such file or directory
进入5 | #include "Python.h"
当模块使用async时,它可能会在单独的线程中运行代码,它不会等待结果,但它会给你对象,你可以稍后使用它来检查是否已经有结果。在一些模块中,你可以使用await
来等待结果(但这只适用于async
函数,它需要运行async
循环),但一些模块有特殊的函数来等待结果。
grequests
对此也有特殊的功能-您应该在官方示例中看到
responses = grequests.map(responses)
如果你使用它,那么你得到对象列表<Response>
。没有map()
,你只能得到<grequests.AsyncRequest>
对象的列表
最小工作示例:
import grequests
import time
start_time = time.time()
sites = ['https://facebook.com' for x in range(5)]
data = {'a': 'b'}
responses = [grequests.get(u, data=data) for u in sites]
# wait for all results
responses = grequests.map(responses)
for response in responses:
print('response:', response)
print('status_code:', response.status_code)
print('text:', response.text)
print("--- %s seconds ---" % (time.time() - start_time))