【问题标题】:Celery with Redis on Python/Django Not Populating any Redis Lists在 Python/Django 上使用 Redis 的 Celery 不填充任何 Redis 列表
【发布时间】:2021-06-01 15:06:14
【问题描述】:

我有一个相当简单的问题 - 我的印象是 Celery(带有 Redis)默认将每个任务推送到名为“celery”的 Redis 列表。

我希望能够看到这个 Redis 列表以便在其他应用程序中使用它(查看任务长度),但是当我查看我的 Redis 队列以查看“芹菜”Redis 列表有多长时(鉴于我的任务是在那个队列中启动的),它不存在。

注意:在端口 3780 上使用带有 Redis Image 5.0 的 Docker(将其与我的 Django 应用程序的其余部分隔离)

据此:https://stackoverflow.com/a/43420719/10112899 我应该可以只查询我指定的芹菜队列的长度(默认 = 芹菜),但它不存在!

这是 Redis CLI 给我的:

问题:Celery For Django 和 Python 根本不使用 Redis 列表吗?

【问题讨论】:

    标签: redis celery django-celery


    【解决方案1】:

    Celery 确实使用了 Redis LIST/ZSET,但有一些事情需要记住。如果任何集合为空,则 Redis 会删除密钥,因此如果您推送几个条目,那么您应该能够识别队列。

    【讨论】:

    • 我实际上做了更多的挖掘工作,发现 Redis 队列只填充了“芹菜”列表下我的工作人员无法立即“接受和处理”的内容。我将并发性从 16 设置为 1,并启动了 60 个任务(20 秒睡眠),最后我开始看到 Redis 队列填充在“芹菜”列表下。另一方面,当我将并发设置为 16 并快速运行(20 秒睡眠)(60 个任务)时,我的工作人员会以某种方式立即摄取它们,导致它们永远不会显示在 Redis 队列的“芹菜”列表下——即使我没有足够的工人(60 个任务对 16 个工人)
    猜你喜欢
    • 1970-01-01
    • 2012-01-22
    • 2018-05-03
    • 2015-11-14
    • 1970-01-01
    • 2021-12-22
    • 2020-08-30
    • 2021-12-29
    • 2018-06-25
    相关资源
    最近更新 更多