嘿,r/FastAPI - 我曾在12月份分享过一个可以在 CLI 下为 FastAPI 应用程序生成模块化组件的工具:[https://www.reddit.com/r/FastAPI/comments/1pdc89x/i\_built\_a\_fastapi\_cli\_that\_scaffolds\_full\_apps/]
人们的反馈简直不可思议,我们对社区反馈的重视让我在下一份代码中得到了非常大的提高:
* *"ARQ 不在主张模式,我应该考虑 TaskIQ 吗?"*
* *"当我从 Django + Celery 迁移到 Async FastAPI 时,我也检查了 Dramatiq 以和它配对。没有 Celery 那么全面,但是仍然是一个很好的产品,易于使用。"*
在过去的三个月里,我添加了社区要求的所有功能。你现在可以在初始化时选择 ARQ、TaskIQ 或 Dramatiq,以满足实际需求。
**但支持多种后端带来了运维问题。**
每个工作者系统都有其自己的监控解决方案 - TaskIQ 有 `taskiq-dashboard`,ARQ 有 `arq-dashboard`,Dramatiq 有 `dramatiq_dashboard`。对于单个后端项目来说这是很好的,但当支持所有三个后端时,你的用户必须学习不同的工具,取决于他们用哪一个后端。
鉴于 Overseer (该堆栈的控制平面) already 监控了您的数据库、缓存、身份认证服务和调度器,我需要-worker 的监控与 Overseer 的其他一致,因此需要一个统一的实时监控界面。
所以,我在 Overseer 直接构建了用于所有三个后端的统一实时工作者监控界面。
**架构:**
* Workers 将标准化的生命周期事件发布到 Redis Streams(不论后端是什么)
* Overseer 通过 `XREAD BLOCK` 消费并以 SSE 方式传输更新
* 实时监控整合到了现有的健康检查和警报中
* UI 在 ~100ms 内更新,因此在重负载下不会失影
这个功能已经作为堆栈的一部分实现了:
uvx aegis-stack init my-project --components "worker[taskiq]"
你可以在 [https://sector-7g.dev/dashboard/](https://sector-7g.dev/dashboard/) 实时预览它。
**链接:**
* [GitHub]
* [文档]
应该支持哪些其他的工作者后端?
我做了一个非常长的、非常努力的去检查 Celery,但并没有成功,或者我必须构建自己的异步/同步桥梁或者对 Celery 和异步项目的方法都编写同步和异步版本。2015 年之后我就最后一次使用 Celery,我的理解完全停滞了,实在说不想冒险。
有一些关于 Celery 6 具有内置的异步调度支持的说法。这个庞大的生态系有一大群用户,我现在根本做不到 。
我也一直在看这个: [https://github.com/tobymao/saq]
我不想单纯为了增加功能而新添加工作者后端,但如果我有缺项,请告诉我。这对界面本身的建议也非常欢迎。
评论 (0)