烧瓶和长期运行的任务

时间:2016-03-19 03:28:44

标签: python caching flask

我正在使用Flask编写一个小型Web服务器,需要执行以下操作:

  1. 在第一个请求中,提供基本页面并启动长(15-60秒)数据处理任务。数据处理任务查询我不控制的第二台服务器,更新本地数据库,然后对结果进行一些计算以显示在网页中。
  2. 该页面发出了几个AJAX请求,这些请求都依赖于长任务的部分结果,所以我需要等到处理完成。
  3. 如果第一页的后续请求在处理任务正在进行时(或者甚至在此后不久)进入,则理想情况下会重新使用先前请求的结果。
  4. 我尝试使用flask-cache(特别是SimpleCache),但遇到了一个问题,因为当我真的宁愿保留确切的对象时,缓存似乎会剔除结果。

    我想我可以重新编写我可以缓存的内容,然后实现一个工作线程来进行处理。

    有没有更好的方法来处理这种工作流程?

1 个答案:

答案 0 :(得分:2)

我认为长时间数据处理的最佳方式是Celery

  1. 发送请求以运行任务并接收任务ID。
  2. 定期发送ajax请求以检查任务进度并接收任务执行结果。