在Vercel上使用Celery运行后台任务

在Vercel上使用Celery运行后台任务

💡 原文英文,约200词,阅读约需1分钟。
📝

内容提要

Vercel现已原生支持Celery异步任务队列,任务作为Vercel函数运行并随流量自动扩展。默认结果存于运行时缓存,可配置持久后端。通过pyproject.toml声明worker,使用vercel://代理,采用Fluid计算按活跃CPU计费,自动伸缩,按需付费。

🔎

延伸解读

原生集成与自动伸缩

Vercel 将 Celery 任务作为函数运行,并利用 Fluid 计算按活跃 CPU 计费,实现自动伸缩。这意味着任务负载会根据流量动态调整,无需手动管理服务器,且只在任务执行时产生费用。对于流量波动明显的应用,这种模式能有效控制成本,但需注意,空闲时可能没有常驻进程,任务调度可能受冷启动影响。

结果存储的默认限制

默认情况下,任务结果存储在运行时缓存中,适合小数据量和短时工作流。若需要持久化存储或更长的保留时间,必须配置额外的后端。开发者应评估自身场景:若任务结果重要或需长期访问,应尽早规划持久化方案,避免因缓存失效导致数据丢失。

配置与部署要点

通过 pyproject.toml 声明 worker 订阅者,并使用 vercel:// 代理自动接入 Vercel Queues。这种配置简化了部署流程,但需注意,broker 和结果后端是分离的:broker 由 Vercel 管理,而结果后端需自行配置。此外,示例代码展示了 FastAPI 集成,但实际应用中需确保 worker 的导入路径正确,并处理好任务 ID 的传递。

Q&A

Vercel上如何原生支持Celery异步任务队列?

Vercel现已原生支持Celery,任务作为Vercel函数运行,并随流量自动扩展。

在Vercel上使用Celery时,任务结果默认存储在哪里?

默认存储在运行时缓存(Runtime Cache)中,适合小数据量和较短工作流。

如何在Vercel上配置Celery worker?

在pyproject.toml中声明worker为订阅者,例如:[[tool.vercel.subscribers]] entrypoint = "worker:app"。

Vercel上的Celery使用什么broker?

使用vercel://代理,自动安装并设置默认broker_url为vercel://,用于Vercel Queues。

Vercel上Celery的计费方式是什么?

使用Fluid计算,按活跃CPU计费,自动伸缩,按需付费。

如果默认结果存储不满足需求,如何增强持久性?

可以配置持久化结果后端,以提供更强的持久性保证、更多存储或更长保留时间。

🏷️

标签

➡️

继续阅读