我正计划部署一个动态站点,该站点需要在后台定期完成某些任务,比如说每隔一两个小时。我需要输出的数据完全取决于这些查询的结果。
现在,问题是这些任务需要一定的时间,例如 8-10 分钟:所以如果用户请求一个页面,因此某个视图被调用,而该任务仍在进行中,一切都会变糟。
所以,这里的问题是:我需要实现什么来处理这个问题?我一直在搜索,发现了有关 celery 的信息,但我不明白如何使用它来解决上述问题,并可能实现一个缓存系统,在任务尚未完成时进行干预。
我正计划部署一个动态站点,该站点需要在后台定期完成某些任务,比如说每隔一两个小时。我需要输出的数据完全取决于这些查询的结果。
现在,问题是这些任务需要一定的时间,例如 8-10 分钟:所以如果用户请求一个页面,因此某个视图被调用,而该任务仍在进行中,一切都会变糟。
所以,这里的问题是:我需要实现什么来处理这个问题?我一直在搜索,发现了有关 celery 的信息,但我不明白如何使用它来解决上述问题,并可能实现一个缓存系统,在任务尚未完成时进行干预。
解决方案如下:视图将提供缓存结果,当任务完成时,该视图将使用新的结果更新缓存结果。您也可以在这里以这种方式使用 celery,当缓存视图被命中并且必须重新计算时,芹菜任务将被分离(视图将返回缓存值)。
这里有一个关于一次性 celery 任务的有趣示例:http: //ask.github.com/celery/cookbook/tasks.html