带有 Celery 的 redis 键的自定义前缀

Posted

技术标签:

【中文标题】带有 Celery 的 redis 键的自定义前缀【英文标题】:Custom prefix for redis keys with Celery 【发布时间】:2018-10-09 03:42:01 【问题描述】:

我使用 redis 作为 Django 和 Celery 之间的代理。我有权访问的 redis 实例与许多其他应用程序共享,因此代理不可靠(它使用的 redis 密钥被其他人删除,消息经常发送给其他应用程序中的工作人员)。更换redis数据库并不能解决问题(数据库少,应用多)。

如何配置 Celery 为它使用的所有键添加自定义字符串的前缀?文档提到了向队列名称添加前缀的方法,但这不会影响 redis 键。据我所知,底层库 (Kombu) 似乎不允许用户为其使用的键添加前缀。

【问题讨论】:

【参考方案1】:

Celery 尚不支持此功能。由于缺乏劳动力,有关此主题的拉取请求目前被搁置:

https://github.com/celery/kombu/pull/912

【讨论】:

【参考方案2】:

您可以只覆盖 celery 任务的前缀值。

@shared_task(bind=True)
def task(self, params):
    self.backend.task_keyprefix = b'new-prefix'

【讨论】:

以上是关于带有 Celery 的 redis 键的自定义前缀的主要内容,如果未能解决你的问题,请参考以下文章

将带有外键的自定义标签呈现到模板问题中

多个celery如何使用同一个redis做为broker?

0051利用Redis实现业务主键的自增

如何使用 cbt 从 BigTable 中删除带有前缀键的行范围

使用带有附加参数的自定义规则验证 Laravel 中的数组

Django使用Celery加redis执行异步任务