2013-11-03 5 views
5

का काम कर बाहर सवाल से:स्ट्रीमिंग डेटा जुटाने RuntimeError: अनुरोध संदर्भ

Streaming data with Python and Flask

कोड सामान्य चल रहा है, और मैं समारोह g() संशोधित करना चाहते हैं, लेकिन अनुरोध पैरामीटर कर सकते हैं नहीं g() में पारित किया जा है और यह एक RuntimeError: working outside of request context.

मैं एक लंबे समय के लिए डिबगिंग किया गया है, और मैं इसे कैसे संशोधित करने के लिए पता नहीं है, आप कोड की समीक्षा करने और त्रुटि के पीछे कारण की व्याख्या मदद कर सकते हैं को जन्म देती है?

धन्यवाद।

मेरे कोड है:

@app.route('/username', methods=['GET', 'POST']) 
def index(): 
    req =request 
    print req 
    print "111------------" + req.method + "\n" 
    def ggg1(req): 
     print req # the req not my pass into the req.... 
     print "444------------" + req.method + "\n" 
     if req.method == 'POST': 
      if request.form['username']: 
       urlList = request.form['username'].splitlines() 
       i = 0 
       for url in urlList(): 
        i += 1 
        resultStr = chkListPageContent(url, getUrlContent(url), "script") 
        print i, resultStr 
        yield i, resultStr 
    print req 
    print "222------------" + req.method + "\n" 
    return Response(stream_template('index.html', data=ggg1(req))) 
+0

['copy_current_request_context()' मदद नहीं करता] [https://gist.github.com/6d2150f0eaf793320f6d)। आप कई जेनरेटर बनाने की कोशिश कर सकते हैं: एक 'जीईटी' के लिए, दूसरा 'POST' के लिए जो' अनुरोध 'का उपयोग नहीं करता है और पैरामीटर के रूप में आवश्यक डेटा पास करता है, उदाहरण के लिए,' if request.method == 'POST': def ggg_post (url_list) : उपज "कुछ" वापसी प्रतिक्रिया (ggg_post (url_list = request.form ['username']। splitlines())) अन्यथा: वापसी ... ' – jfs

उत्तर

4

आप stream_with_context() उपयोग करने के लिए की जरूरत है। जनरेटर के अंदर अनुरोध संदर्भ प्राप्त करने के लिए Reference

+1

हजार अपवॉट्स :) – plaes

+0

यह बहुत उपयोगी है! –

संबंधित मुद्दे