python requests 异步调用_异步请求与Python请求

I tried the sample provided within the documentation of the requests library for python:

with async.map(rs) I get the response codes but I want to get the content of each page requested.

out = async.map(rs)

print out[0].content

for example is just not working.

解决方案

Note

The below answer is not applicable to requests v0.13.0+. The asynchronous functionality was moved to grequests after this question was written. However, you could just replace requests with grequests below and it should work.

I've left this answer as is to reflect the original question which was about using requests < v0.13.0.

To do multiple tasks with async.map asynchronously you have to:

Define a function for what you want to do with each object (your task)

Add that function as an event hook in your request

Call async.map on a list of all the requests / actions

Example:

from requests import async

# If using requests > v0.13.0, use

# from grequests import async

urls = [

'http://python-requests.org',

'http://httpbin.org',

'http://python-guide.org',

'http://kennethreitz.com'

]

# A simple task to do to each response object

def do_something(response):

print response.url

# A list to hold our things to do via async

async_list = []

for u in urls:

# The "hooks = {..." part is where you define what you want to do

#

# Note the lack of parentheses following do_something, this is

# because the response will be used as the first argument automatically

action_item = async.get(u, hooks = {'response' : do_something})

# Add the task to our list of things to do via async

async_list.append(action_item)

# Do our list of things to do via async

async.map(async_list)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值