FastAPI - 运行 在后台连续获取请求的最佳方式

FastAPI - Best way to run continuous GET requests in the background

我正在尝试创建一个程序,该程序定期从大约 10 个网站发出 GET 请求,并在本地更新数据库中的信息。现在当用户需要信息时,我会显示本地存储的汇总信息。

我正在尝试找出 运行 FastAPI 中这些周期性 GET 请求的最佳方法。我是 FastAPI 的新手,仍在努力解决问题。

经过一番研究,我想到了两个选择:

  1. 使用后台任务端点,该端点 运行 定期执行 GET 请求,从每个网站一一发出。
  2. 使用 Celery 执行这些 GET 请求

如果有人有做过类似事情的经验,我想找出最好的方法,或者我将如何找到最好的方法?

我认为 Celery 对于一项周期性任务来说太过分了。 Celery 需要一个代理(以及更好的后端)。您打算 bringup/manage RabbitMQ 仅用于单个任务吗?

一个更简单的解决方案可以使用 asyncio

TIME_INTERVAL_IN_SEC = 60


async def crawl_websites():
    while True:
        # async GET requests
        # async update DB
        await asyncio.sleep(TIME_INTERVAL_IN_SEC)


loop = asyncio.get_event_loop()
task = loop.create_task(crawl_websites())
loop.run_until_complete(task)