How do I make HTTP POST requests with grequests

Crypto picture Crypto · Jan 12, 2014 · Viewed 13.9k times · Source

I tried the following:

import grequests

urls = ['http://localhost/test', 'http://localhost/test']

params = {'a':'b', 'c':'d'}
rs = (grequests.post(u, params) for u in urls)
grequests.map(rs)

But it says the following:

File "search.py", line 6, in <genexpr>
rs = (grequests.post(u, params) for u in urls)
TypeError: __init__() takes exactly 3 arguments (4 given)

I also need to pass the response to a callback for processing.

Answer

praveen picture praveen · Jan 12, 2014

grequests.post() function takes only one positional argument i.e URL to which you have send that POST request. The rest of the parameters are taken as key word arguments.

So you need to call grequests.post() as:

import grequests

urls = ['http://localhost/test', 'http://localhost/test']

params = {'a':'b', 'c':'d'}
rs = (grequests.post(u, data=params) for u in urls)
grequests.map(rs)