【问题标题】:How do I remove all Celery results from a redis backend when a user's Flask session ends?当用户的 Flask 会话结束时,如何从 redis 后端删除所有 Celery 结果?
【发布时间】:2018-03-25 01:49:39
【问题描述】:

这是一个高级问题,因为我可能只是设计不佳的 Flask 应用程序,但我目前已经构建了一个应用程序,在用户提交表单后,celery 工作人员将输入格式化为 sql 查询并执行该查询.

现在我已经设置了一个 Redis 后端来保存结果,所以当任务完成后,我可以通过从 Redis 获取它来显示结果。但是,我不希望这些结果永远存在于 Redis 中,但我确实希望它们在应用程序中的整个用户会话中持续存在,以便他们可以在会话中查看先前查询的结果。

我该怎么做呢?我的直觉是将单个任务 ID 添加到会话中,当用户使用应用程序时,使用 celery 中的 forget() 删除所有任务 ID。

【问题讨论】:

  • 你可以看看task_func.AsyncResult(task_id)方法。

标签: python flask redis celery


【解决方案1】:

您可以使用“result_expires”配置标志并将其设置为 ~5min。更多信息:http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_expires

【讨论】:

  • @user3002486 你试过了吗?
猜你喜欢
  • 2019-08-29
  • 2017-05-28
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 2018-09-11
  • 2021-11-26
  • 2016-06-02
  • 2016-04-27
相关资源
最近更新 更多