【发布时间】:2019-05-09 17:16:42
【问题描述】:
我使用 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\"}"
您可以在上面的 SETEX 命令中看到的"result": {...} 是任务返回的内容。我希望 SETEX 更符合以下几点:
"SETEX" "mode-staging-123-50-SUCCESS" "{...}",这样当我在 Redis 中查看我的所有键时,键的名称对我来说是信息性的。
这是我的 Redis 缓存中无意义的键的另一个示例视图:
【问题讨论】:
标签: python-3.x redis celery