I'm trying to parse and put JSON async but getting:
RuntimeWarning: coroutine 'main' was never awaited
import asyncio
import aiohttp
async def get_put_content(url_get, url_put, session):
async with session.get(url_get) as response:
data = await response.read()
async with session.put(url_put, data=data) as response:
print(response.status)
async def main():
async with aiohttp.ClientSession() as session:
for temp_id in range (1, 100):
api_url = "https://api.link" + str(temp_id)
bd_url = "http://127.0.0.1:5984/photosget/" + str(temp_id)
asyncio.create_task(get_put_content(api_url, bd_url, session))
asyncio.wait(get_put_content)
if __name__ == '__main__':
main()
How I could use async correctly?
A Task is created and scheduled for its execution through the asyncio. create_task() function. Once scheduled, a Task can be requested for cancellation through task. cancel() method.
Run the event loop until stop() is called. If stop() is called before run_forever() is called, the loop will poll the I/O selector once with a timeout of zero, run all callbacks scheduled in response to I/O events (and those that were already scheduled), and then exit.
The keyword await passes function control back to the event loop. (It suspends the execution of the surrounding coroutine.) If Python encounters an await f() expression in the scope of g() , this is how await tells the event loop, “Suspend execution of g() until whatever I'm waiting on—the result of f() —is returned.
As stated in the error message, you have to await for your main function as it is asynchronous. Borrowed from the Python3.7 documentation section about coroutines
Note that simply calling a coroutine will not schedule it to be executed
Given the fact that you want to run your toplevel entrypoint, in Python 3.7+ you should use
if __name__ == "__main__":
asyncio.run(main())
For earlier versions you have to handle the event loop yourself:
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With