2016-04-13 20 views
1

add_url_ruleの使用は失敗しますが、@ app.route( '')は正常に動作します。Python Flask:ルートvs add_url_rule、SSE

こんにちは、私はSSE(Server Sent Events)をPython Flaskアプリに追加しようとしています。残念ながら、このアプリケーションではSOMEOBJECT.app.add_url_ruleを使用して経路を管理しているため、この場合はデコレータを使用しても機能しません。

from flask import Flask, Response 
import random 
import time 

app = Flask(__name__) 
def eventStream(): 
    # will send simple SSE style responses 
    while True: 
     waittt = random.random() 
     time.sleep(waittt) 
     yield "data: {}\n\n".format(str(waittt)) 
# This route works fine :) 
@app.route("/streamroute") 
def stream(): 
    return Response(eventStream(), mimetype="text/event-stream") 

# This route doesn't work :(
app.add_url_rule("/stream", stream) 
app.run(debug=True) 

OK curl http://localhost:5000/streamroute

KO curl http://localhost:5000/stream

+0

'トレースバック(最新の最後の呼び出し): ... ファイル" /Library/Python/2.7/site-packages/flask/ctx.py "、251行目、__init__ blueprint = self.request.blueprint ファイル"/Library/Python/2.7/site-packages/flask/wrappers.py"、97行目、青写真 の場合self.url_ruleと '。' in self.url_rule.endpoint: TypeError: 'function'型の引数が反復可能ではありません – thomas

答えて

2
from flask import Flask, Response            
import random                 
import time                  

app = Flask(__name__)               
def eventStream():                
    # will send simple SSE style responses          
    while True:                 
     waittt = random.random()            
     time.sleep(waittt)              
     yield "data: {}\n\n".format(str(waittt))        
# This route works fine :)              
@app.route('/streamroute')              
def stream():                 
    return Response(eventStream(), mimetype="text/event-stream")    

# This route doesn't work :(             
app.add_url_rule('/stream', 'stream', stream)         
app.run(debug=True)  

以下のドキュメントを参照してください、正しい構文は次のとおりです。詳細は

app.add_url_rule('/stream', 'stream', stream)   

http://flask.pocoo.org/docs/0.10/api/#flask.Flask.add_url_rule

+0

ありがとう、私はその文書のその部分を理解していませんでした:/ – thomas

+0

問題はありません。私も何かを学んだ:) – wgwz

関連する問題