提问人:Fábio Marane 提问时间:10/31/2023 更新时间:10/31/2023 访问量:25
如何使用 aiometer 的 run_all 方法创建进度条?
How to create a progress bar with aiometer's run_all method?
问:
我一直在使用 httpx、asyncio 和 aiometer 从 API 创建管道,以限制同时运行的协程数量。
我知道可以为 asyncio 的 gather 方法创建异步进度条,但是我没有发现任何关于对 aiometer 的run_all做同样的事情。
以下是使用的主要功能:
from functools import partial
from asyncio import run
from aiometer import run_all
async def main():
result_donations = run_all(
[partial(ApiGuara.get_donations, page) for page in range(50)],
max_at_once=10
)
await result_donations
run(main())
“get_donations”方法是一种异步方法,它从 API 获取数据并插入到数据湖中。
async def get_donations(self, page:int) -> None:
async with AsyncClient(
base_url=f'{self.url}',
headers=self.headers,
timeout=None) as asyncclient:
try:
r = await asyncclient.get(f'/donations?page={page}')
donations_json = r.json()['data']
for donation in donations_json:
donation['_id'] = donation.pop('id')
try:
#DONATIONS_COLLECTION.insert_one(donation)
pass
except errors.DuplicateKeyError:
pass
finally:
await asyncclient.aclose()
我尝试使用 tqdm,就像它与 asyncio 一起使用一样,但是它不能与 aiometer 一起正常工作。
有谁知道该怎么做?谢谢
答: 暂无答案
评论
aiometer.run_on_each
result = await aiometer.run_on_each(partial(my_func, headers=HEADERS), tqdm(to_process),max_per_second=10, max_at_once=10)