IT/python
python requests 비동기식으로 호출하는 방법 (asyncio / aiohttp)
하모니카신나게불어요
2023. 7. 6. 17:39
과거 정산기 프로그램을 만들 때 정산기 결제창이 뜰 때
프로그램이 멈춰버리는 현상 때문에 고생 좀 했었다.
알아보니 정산기 프로그램도 포커스를 잡고있고 결제창도 포커스를 잡으려니 충돌하는 이유이다.
결제창을 api로 호출할 때 비동기식으로 호출하면 이러한 문제를 피할 수 있다.
pip install asyncio
pip install aiohttp
https://pypi.org/project/asyncio/
asyncio
reference implementation of PEP 3156
pypi.org
https://pypi.org/project/aiohttp/2.3.8/
aiohttp
Async http client/server framework (asyncio)
pypi.org
API 호출에 requests를 사용할 때 asyncio / aiohttp를 버무려 쓰면 된다.
ex)
r = asyncio.run(testrequests(url))
async def api_pay(self, url, amount):
headers = {headers}
data = {data}
async with aiohttp.ClientSession() as session:
async with session.post(url, data=data, headers=headers) as response:
res = await response.read()
return r
이런 식으로 해서 살을 붙여서 사용하면 된다.
백그라운드상에서 보면 메인으로 잡고있는 것들이 있어서 충돌을 방지하는 것이 좋다.
728x90