问题描述
我有一个当前使用 asyncio 编写的后端应用程序:用于 Web 服务器的 fastapi,用于异步数据库驱动程序的 sqlalchemy 1.4 + asyncpg。我需要将任务部署到将运行和更新主机应用程序的工作人员。目前我正在使用 aio_pika
,但想要更强大的东西,例如 celery
和 flower
。
我知道 celery 没有与 asyncio 集成。我也通读了 answers like this one 并且我担心的是任务不是异步的,这是微不足道的。我担心从主事件循环中启动任务。
我的主要问题是,my_task.delay()
/my_task.apply_async()
是否完全阻止了正在运行的线程?如果是这样,更好的方法是使用从中央 get
或 mp.Queue
中ProcesspoolExecutor
项的多处理工作线程,然后仅从该工作进程部署 celery 任务吗?
我想部署任务,理想情况下,在任务完成时收到通知。不过,这可以通过 fastapi
界面在任务本身内完成。我只想确保部署任务不会阻塞异步事件循环。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)