【问题标题】:Implement a TaskQueue (like Celery) with ETA/Countdown使用 ETA/Countdown 实现 TaskQueue(如 Celery)
【发布时间】:2017-02-10 08:26:51
【问题描述】:

许多流行的任务队列(如 Google GAE TaskQueue、Celery)都有 ETA/Countdown 功能,允许在 xxx 秒后将任务放入队列。

我正在处理一个需要具有 ETA 功能的任务队列的项目。但是,我必须使用 Google Pubsub 消息传递系统有一些限制。 Pubsub 没有 ETA 功能。我想知道如何为任务队列实现可靠且可扩展的 ETA 机制。欢迎使用一般架构理念和实际代码示例。

我们的系统每秒排队 600-2000 个任务,其中大约 10% 需要 ETA。它是一个分布式系统,对性能至关重要。

我试图追踪 celery 的来源code,但找不到处理 ETA 的实际逻辑。如果有人能指出我处理 ETA 的 Celery 文件/代码,那也很好。

【问题讨论】:

    标签: celery message-queue messaging task-queue google-cloud-pubsub


    【解决方案1】:

    我想我可能已经找到了 Celery 是如何做到的。在eventlet.py 中,它使用 eventlet 的 spawn_after 功能来延迟 worker 创建“ETA”秒。

    secs = max(eta - monotonic(), 0) g = self._spawn_after(secs, entry)

    【讨论】:

    • Celery 是否支持使用 PubSub 作为消息代理?如果是这样,你能指出我要使用的 PubSub Python 库吗?
    猜你喜欢
    • 2015-09-24
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多