【发布时间】:2022-11-19 01:59:13
【问题描述】:
我是异步函数的新手,我正在尝试从外部 API 进行多次调用。 concurrent.Futures 不足以检索响应,所以我尝试使用 asyncio 和 httpx,但该过程抛出一个未知错误,并且对我来说很难调试。
协程似乎有一个空值或从未被调用。
这是我的客户
async def get_product_by_id_async(self, product_id: str) -> Response:
if product_id is None:
return None
response_await = await self.async_client.get(
url=f"{self.base_url}/api/catalog/stock{product_id}",
headers=self.headers,
)
if response_await.status_code == 200:
response = json.loads(response_await.text)
return response
这是我的协调功能
async def async_get_products(data_parser):
path = data_parser.options["path"]
sku_list = client.run()
products_list = []
tasks = [await client.get_product_by_id(sku) for sku in sku_list]
breakpoint()
completed = await asyncio.gather(*tasks)
for product in completed:
products_list = build_product_df(products_list, product)
products_df = pd.DataFrame(products_list)
products_df.to_csv(path, index=False)
return products_df
def products_processor_concurrent(data_parser):
return async_get_products(data_parser)
也许我应该叫它不同但我真的很感谢你的帮助
【问题讨论】:
标签: python pandas api python-asyncio httpx