【发布时间】:2018-08-06 14:14:32
【问题描述】:
我正在使用 Celery,主管运行工作程序,Redis 作为代理,我遇到了一个 Celery 工作程序明显冻结的问题,使其无法处理更多任务并导致其在 Redis 中的任务队列被填满直到导致一些内存问题。我在调用任务时尝试设置 expires 选项,认为这将利用 Redis 对密钥到期的支持:
some_task.apply_async(args=('foo',), expires=60)
但这不起作用,当我在 Redis CLI 中检查相应的列表时,它只是不断扩大——也许并不奇怪,因为它在 Redis 中听起来像 list expiry is not built-in functionality。 Celery docs 说到期时间对应于“发布”任务后的时间,但我找不到任何提及“发布”的实际含义。我以为它是指将任务添加到 Redis 列表,所以要么这个假设是错误的,要么发生了我不理解的其他事情(或两者兼而有之)。
我对任务到期时间有误吗?如果是这样,有什么方法可以让消息在 Redis 中过期?
【问题讨论】:
标签: python redis celery celeryd