2010-04-25 78 views
1

我正在使用Pylons进行应用程序工作,我想知道是否有办法确保它不会花太多时间处理一个请求。也就是说,我想找到一种方法在每个请求上放置一个计时器,以便在过多时间过后,请求会停止(并可能返回某种错误)。在主塔上停止长时间运行的请求

该应用程序应该允许用户运行一些复杂的计算,但我想确保如果计算开始花费太多时间,我们会停止它以允许进行其他计算。

回答

3

而不是终止与一个错误的请求,一个较好的方法可能是执行在一个单独的线程长时间运行的计算(或线程)或过程(或过程):

  1. 当计算请求是收到后,它会被添加到队列中并用唯一的ID进行标识。您重定向到引用唯一ID的结果页面,该页面可能包含“请稍候,计算”消息和刷新按钮(或通过元标记自动刷新)。
  2. 执行计算的线程或进程会从队列中弹出请求,更新最终结果(也可能是进度信息),结果页面处理程序在刷新时会向用户显示结果页面处理程序。
  3. 计算完成后,返回的刷新页面将没有刷新按钮或刷新标记,只是显示最终结果。
+0

+1。当你有这个体系结构时,你可以终止长时间运行的请求,当它们的时间超过超时值时,它们会从主线程/进程中终止。 – 2010-04-25 20:48:45

相关问题