可以使用Celery处理同步任务吗?

7 投票
1 回答
5156 浏览
提问于 2025-04-16 07:19

几乎同步的工作方式也可以;基本上,我想把一个网页应用程序的数据访问和处理交给任务队列来处理大部分工作。那么,对于celery任务,我能接受的最快延迟是多少呢?

更新(为了更清楚)

为了更清楚,我应该解释一下,虽然处理能力很重要,但对我来说并不是必须的;我暂时不需要在这方面进行扩展。现在我唯一关注的就是延迟。我愿意使用 task.apply,如果这是唯一可行的方法,但我希望能把工作分散一下。

1 个回答

7

当我提到 throughput 时,我指的是从发送一个任务到它被执行的平均延迟时间。而 roundtrip 则是指发送一个任务、执行它、把结果发送回来并取回结果所需的平均时间。

正如我在评论中提到的,我目前没有任何官方的数据可以分享,但如果配置得当,Celery 的延迟时间比许多其他解决方案要低。不过,它的开销还是比在本地执行一个函数要大。这一点在设计任务的粒度时需要考虑[1]。

我目前正在写一个性能指南,可能会对你有帮助:http://ask.github.com/celery/userguide/optimizing.html

欢迎反馈,也想知道你们对哪些其他性能因素感兴趣。

[1] http://celeryq.org/docs/userguide/tasks.html#granularity

撰写回答