异步请求不能使用 GRequests
Asynchronous requests don't work using GRequests
我正在编写一个程序。它从文件中读取 url,然后发出请求。但是处理程序不会被调用。
这是我的代码:
import grequests
def main():
async_list =[]
for site in extractsites():
action_item = grequests.get('http://' + site, hooks={'response': handleresponse})
async_list.append(action_item)
grequests.map(async_list)
def extractsites():
return ['google.com']
def handleresponse(response):
print(response)
if __name__ == '__main__':
main()
谁能看出它为什么不起作用?
处理程序必须有不同的签名,可以传递其他参数:
def handler(response, **kwargs):
print(response, kwargs)
完整示例:
import grequests
def main():
async_list =[]
for site in extractsites():
action_item = grequests.get('http://' + site, hooks={'response': handleresponse})
async_list.append(action_item)
grequests.map(async_list)
def extractsites():
return ['google.com']
def handleresponse(response, **kwargs):
print(response, kwargs)
if __name__ == '__main__':
main()
或更短:
import grequests
urls = ['http://google.com']
handler = lambda response, **kwargs: print(response, kwargs)
grequests.map(grequests.get(url, hooks={'response': handler}) for url in urls)
我正在编写一个程序。它从文件中读取 url,然后发出请求。但是处理程序不会被调用。
这是我的代码:
import grequests
def main():
async_list =[]
for site in extractsites():
action_item = grequests.get('http://' + site, hooks={'response': handleresponse})
async_list.append(action_item)
grequests.map(async_list)
def extractsites():
return ['google.com']
def handleresponse(response):
print(response)
if __name__ == '__main__':
main()
谁能看出它为什么不起作用?
处理程序必须有不同的签名,可以传递其他参数:
def handler(response, **kwargs):
print(response, kwargs)
完整示例:
import grequests
def main():
async_list =[]
for site in extractsites():
action_item = grequests.get('http://' + site, hooks={'response': handleresponse})
async_list.append(action_item)
grequests.map(async_list)
def extractsites():
return ['google.com']
def handleresponse(response, **kwargs):
print(response, kwargs)
if __name__ == '__main__':
main()
或更短:
import grequests
urls = ['http://google.com']
handler = lambda response, **kwargs: print(response, kwargs)
grequests.map(grequests.get(url, hooks={'response': handler}) for url in urls)