Создайте функцию Async Python для API

Я создаю модуль, который взаимодействует с API, и я думаю создать свою функцию с помощью asyncio. Прямо сейчас мой код выглядит так:

def getMethod(self, stuff:str=None): #yes it in a class
    header = {'Content-Type': 'application/json'}
    endpoint = f"https://{self.endpoint}/"
    params = {"myParam": stuff}
    res = requests.get(endpoint, params=params, headers=header)
    return res

Как видите, я использую модуль запроса для отправки данных. Думаю, мне нужно это сделать:

import asyncio
async def getMethod(self, stuff:str=None): #yes it in a class
    header = {'Content-Type': 'application/json'}
    endpoint = f"https://{self.endpoint}/"
    params = {"myParam": stuff}
    res = requests.get(endpoint, params=params, headers=header)
    yield res

Сработает ли это, чтобы моя функция была асинхронной? или мне также следует использовать что-то вроде httpx (или aiohttp), чтобы дождаться результата? Как следующие

async def getMethod(self, stuff:str=None): #yes it in a class
    header = {'Content-Type': 'application/json'}
    endpoint = f"https://{self.endpoint}/"
    params = {"myParam": stuff}
    await res = httpx.get(endpoint, params=params, headers=header)
    return res

Спасибо за вашу помощь. Пытаюсь изучить там async python.

1 ответ

Рекомендуем использовать httpx, асинхронный код следующим образом:

      async def getMethod(self, stuff: str = None):  # yes it in a class
    header = {'Content-Type': 'application/json'}
    endpoint = f"https://{self.endpoint}/"
    params = {"myParam": stuff}
    async with httpx.AsyncClient(headers=header, params=params) as client:
        res = await client.get(endpoint, params=params, headers=header)
    return res
Другие вопросы по тегам