2013-11-03 16 views
5

Từ câu hỏi:dữ liệu streaming với Python và Flask nâng RuntimeError: ngoài làm việc yêu cầu bối cảnh

Streaming data with Python and Flask

Mã đang chạy bình thường, và tôi muốn thay đổi chức năng g(), nhưng các thông số yêu cầu có thể không được chuyển vào g() và nó tăng RuntimeError: working outside of request context.

Tôi đã gỡ lỗi trong một thời gian dài và tôi không biết cách sửa đổi, bạn có thể giúp xem lại mã và giải thích lý do đằng sau lỗi không?

Cảm ơn.

Mã của tôi là:

@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()' không trợ giúp] (https://gist.github.com/6d2150f0eaf793320f6d) để nhận ngữ cảnh yêu cầu bên trong trình tạo. Bạn có thể thử tạo một vài máy phát điện: một cho 'GET', một cho' POST' không sử dụng 'request' và truyền dữ liệu cần thiết như tham số,' if request.method == 'POST': def ggg_post (url_list) : yield "something" return Response (ggg_post (url_list = request.form ['username']. splitlines())) else: return ... ' – jfs

Trả lời

4

Bạn cần phải sử dụng stream_with_context(). Reference

+1

Ngàn upvotes :) – plaes

+0

Nó rất hữu ích! –

Các vấn đề liên quan