'Proper syntax of parameters using function run_in_executor()
To make a POST call to the API, I use the following script:
r = requests.post(
url,
headers={
"Content-Type": "application/json"
},
json={
"email": my_email,
"password": my_password
}
)
and everything works. Now, I want to rewrite this code as a parameter to the function run_in_executor()
. I did it in the following way but didn't get the desired results:
data1 = dict(
headers={
"Content-Type": "application/json"
},
json={
"email": my_email,
"password": my_password
}
)
async def main():
loop = asyncio.get_event_loop()
future1 = loop.run_in_executor(
None,
requests.post,
url,
data1
)
# rest of the code
In fact, I get an error that tells me that it is mandatory to enter email and password, so obviously I am doing something wrong in passing the parameters. Printing response = await future1
I get error 422. Can anyone help me?
Solution 1:[1]
Sadly, run_in_executor
does not support keyword arguments.
You may use functools.partial
to pack all arguments into one callable and pass it to run_in_executor
.
from functools import partial
async def main():
loop = asyncio.get_event_loop()
future1 = loop.run_in_executor(
None,
partial(
requests.post,
url,
headers={
"Content-Type": "application/json"
},
json={
"email": my_email,
"password": my_password
}
),
)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Aaron |