在服务器上进行计算时显示pag上的进度条

时间:2014-07-15 16:20:15

标签: python web-applications

我试图使用webapp创建一个计算某些内容的页面,然后将答案返回给用户。

基本上我有类似的东西:

class Index(webapp2.RequestHandler):
    def post(self):
        computeforlongtime()
        return pagewithanswer

其中pagewithanswer是html页面字符串。因此,现在它需要用户等待很长时间而不是显示答案。如何更改它以便显示某种进度条或其他什么?当我从方法返回时,页面会移位,我没有办法省略这个。

我真的很感谢你的帮助。 感谢。

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,取决于你真正想要的东西,我会尝试放弃一些:

  1. 使用XMLHttpRequest执行查询(更好地使用jQuery之类的框架),在操作期间显示不确定的进度条,在获取进度条时显示结果。

    • 优点:超级简单
    • 缺点:用户不知道进展,也不知道它是否仍在运行
  2. 使用XMLHttpRequest执行查询,让服务器在某处存储其进度,使用XMLHttpRequest不时查询进度的当前状态,显示确定的进度条,您可以找到可以计算估计的库剩余时间

    • 优点:
      • 用户有关于真实进展的反馈
      • 您可以同时在不同设备上显示进度条,甚至可以创建“所有正在运行的作业”的视图。
    • 缺点:
      • 每秒轮询进度可能会花费你一些CPU服务器端和很多用户
  3. 使用XMLHttpRequest执行查询,服务器是否会不时向客户端发回进程。您可以使用每种推送技术从旧的学校HTTP长轮询到Web套接字执行此操作。您可以使用RabbitMQ,crossbar.io等工具。

    • Pro:您可以重新使用新安装的crossbar.io来处理其他许多事情
    • Con:哇,安装crossbar.io来推动进展......!
  4. 您可以通过不时刷新缓冲区来传输HTTP响应中的进度,例如twitter流API

    • 亲:似乎很容易
    • Con:你可能会受到许多小问题的打击,比如缓存,缓冲......,