我要将应用程序从web.py移植到Flask,主要是因为web.py对Python 3的支持参差不齐,并且对web.py的兴趣似乎越来越少。
但是我在Flask / Werkzeug中找不到的是一种使用路由器在应用程序内调度内部请求的方法。该应用程序的结构使得将有很多内部应用程序调用,在web.py中,我或多或少地按以下方式处理这些请求:
app = web.application(....)
def callUrl(url, method, env, data):
parserUrl = url lib.parse.urlparse(url)
if parsedUrl.scheme == '' and parsedUrl.netloc == '':
# local call
res = app.request(url, method=method, data=data, env=env)
...
else:
assert env == {}
res = requests.request(url, method=method, data=data)
....
我正在尝试找到一种与Flask类似的方法,但是显然我在错误的地方寻找。有人可以指出我正确的方向吗?
答案 0 :(得分:0)
好,回答我自己的问题。我选择的解决方案是,通过用所有必需的WSGI变量(app.request
,REQUEST_METHOD
等)填充环境字典来从web.py重新实现PATH_INFO
,其中包括{{1 }}作为wsgi.input
对象,将正确的数据输入到WSGI应用程序中。
然后我创建了一个合适的start_response()方法来保存标题,并调用
io.BytesIO()
flask应用程序经历了推送请求和环境的所有动作并进行了所有路由,并且我将返回的数据返回到resultData = app.wsgi_app(environ, start_response)
中(并且带有任何错误的标头已经传递给了我的{ {1}}方法。