Untuk menggunakan permintaan (atau pustaka pemblokiran lainnya) dengan asyncio, Anda bisa menggunakan BaseEventLoop.run_in_executor untuk menjalankan fungsi di utas lain dan menghasilkan darinya untuk mendapatkan hasilnya. Sebagai contoh:
import asyncio
import requests
@asyncio.coroutine
def main():
loop = asyncio.get_event_loop()
future1 = loop.run_in_executor(None, requests.get, 'http://www.google.com')
future2 = loop.run_in_executor(None, requests.get, 'http://www.google.co.uk')
response1 = yield from future1
response2 = yield from future2
print(response1.text)
print(response2.text)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Ini akan mendapatkan kedua respons secara paralel.
Dengan python 3.5 Anda dapat menggunakan await
/ async
sintaks baru:
import asyncio
import requests
async def main():
loop = asyncio.get_event_loop()
future1 = loop.run_in_executor(None, requests.get, 'http://www.google.com')
future2 = loop.run_in_executor(None, requests.get, 'http://www.google.co.uk')
response1 = await future1
response2 = await future2
print(response1.text)
print(response2.text)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Lihat PEP0492 untuk lebih lanjut.
subprocess
kode Anda secara paralel.