2016-12-24 42 views
0

我想在瓶打印出网站的状态代码异步地与时间延迟网页,即写一个程序,的Python瓶:通过请求循环并输出到网页直播

import flask 
import time 
import requests 
app = flask.Flask(__name__) 

@app.route('/yield') 
    def index(): 
      def inner(): 
       for x in range(100): 
        time.sleep(1) 
        req = requests.get('https://www.youtube.com/watch?v=[somenumber]') 
        print(req.status_code) 
        return '<br/>\n' + str(req.status_code) 

      return flask.Response(inner(), mimetype='text/html') 



app.run() 

输出这个网页上只是enter image description here

时,我希望它是99“404”的消息,由于for循环的范围。

+1

你不能只流数据到浏览器中,这样的HTTP请求的工作原理是,一旦应用程序返回任何它停止执行。为了达到你想要做的,你需要实现的方法为浏览器定期回服务器调用,然后动态地添加这些结果的网站内容。 javascript,jquery,ajax是需要研究的东西。大量的SO例子利用 – abigperson

+0

你需要'yield',不'return'。第一次迭代之后,您将结束for循环。另外,你为什么期望状态码是99? – davidism

回答

0

return声明瓶是什么告诉HTTP处理程序将输出发送到客户端并关闭连接。你这样做对你的循环的第一个迭代,所以循环永远不会再次运行。

更改为这样的事情:

def inner(): 
    val = "" 
    for x in range(100): 
     time.sleep(1) 
     req = requests.get('https://www.youtube.com/watch?v=[somenumber]') 
     print(req.status_code) 
     val.append('<br/>\n' + str(req.status_code)) # add to a string 
    return val # and then return the value