gpt4 book ai didi

python-3.x - 如何更改 Celery 发送到后端的任务的名称?

转载 作者:可可西里 更新时间:2023-11-01 11:23:33 26 4
gpt4 key购买 nike

我已经使用 Celery 构建了一个队列系统,它接受 Web 请求并执行一些任务来处理这些请求。我使用 Redis 作为 Celery 的后端,但我想这个问题适用于所有后端。

Celery 返回任务名称为 celery-task-meta-<task ID>并将其存储在后端。这对我来说毫无意义。如何更改 celery 发送到 Redis 的结果的名称?我搜索了所有 Celery's documentation试图弄清楚如何做到这一点。

Redis CLI 监视器显示 Celery 正在使用 SETEX 方法并发送以下输入:

"SETEX" "celery-task-meta-dd32ded3-00aa-4884-8b21-42f8332e7fac" "86400" "{\"status\": \"SUCCESS\", \"result\": {\"mode\": \"staging\", \"123\": 50}, \"traceback\": null, \"children\": [], \"task_id\": \"dd32ded3-00aa-4884-8b21-42f8332e7fac\", \"date_done\": \"2019-05-09T16:44:12.826951\", \"parent_id\": \"2e99d958-cd5a-4700-a7c2-22c90f387f28\"}"

"result": {...}您可以在上面的 SETEX 命令中看到的是任务返回的内容。我希望 SETEX 更符合以下内容: "SETEX" "mode-staging-123-50-SUCCESS" "{...}" ,这样当我在 Redis 中查看我的所有键时,键的名称对我来说是信息。

这是我的 Redis 缓存中无意义的键的另一个示例 View :

redis keys

最佳答案

你无法改变这一点。任务 key 由 ResultConsumer 创建Redis 后端使用的类。 ResultConsumer 然后将任务 key 的创建委托(delegate)给 BaseKeyValueStoreBackend类(class)。实际创建 key 的 get_key_for_task 方法使用硬编码 task_keyprefix 设置为 celery-task-meta-。所以,要改变行为,你必须继承这些类。没有配置选项。

关于python-3.x - 如何更改 Celery 发送到后端的任务的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56064483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com