Skip to main content
 首页 » 编程设计

python之Flask-Sijax 回调是 "working outside of request context"

2025年05月04日13think

在回调函数中,我无法访问 flask.session、flask.g 或 url_for() 等函数。他们都抛出一个错误,说我“在请求上下文之外工作”。

Debugging middleware caught exception in streamed response at a point where response headers were already sent. 
Traceback (most recent call last): 
  File "C:\Python27\site-packages\sijax\response\streaming.py", line 136, in _process_call_chain 
    for string in generator: 
  File "C:\Python27\site-packages\sijax\response\streaming.py", line 109, in _process_callback 
    response = self._perform_handler_call(callback, args) 
  File "C:\Python27\site-packages\sijax\response\base.py", line 258, in _perform_handler_call 
    return callback(self, *args) 
  File "C:\Dropbox\Code\Python 2.7\FlaskTesting\testpage.py", line 18, in myformhandler 
    sql_session = flask.g.sql_session 
  File "C:\Python27\lib\site-packages\werkzeug\local.py", line 336, in __getattr__ 
    return getattr(self._get_current_object(), name) 
  File "C:\Python27\lib\site-packages\werkzeug\local.py", line 295, in _get_current_object 
    return self.__local() 
  File "C:\Python27\lib\site-packages\flask\globals.py", line 19, in _lookup_object 
    raise RuntimeError('working outside of request context') 
RuntimeError: working outside of request context 
192.168.1.141 - - [20/Jun/2012 16:33:04] "POST /testpage HTTP/1.1" 200 - 

我一直无法找到解决此问题的方法。任何帮助将不胜感激。

  • Python v2.7
  • flask v0.8
  • flask -Sijax v0.3

请您参考如下方法:

您可以尝试使用 stream_with_context。从 http://flask.pocoo.org/docs/0.12/patterns/streaming/#streaming-with-context 复制的代码示例

from flask import stream_with_context, request, Response 
 
@app.route('/stream') 
def streamed_response(): 
    def generate(): 
        yield 'Hello ' 
        yield request.args['name'] 
        yield '!' 
    return Response(stream_with_context(generate()))