gpt4 book ai didi

python - web.py app.request() 的 Flask/Werkzeug 等效项

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:31 25 4
gpt4 key购买 nike

我正在将一个应用程序从 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 做类似的事情,但显然我找错了地方。有人能指出我正确的方向吗?

最佳答案

好的,回答我自己的问题。我选择的解决方案是通过使用所有必需的 WSGI 变量(REQUEST_METHODPATH_INFO 等),包括作为 io.BytesIO() 对象的 wsgi.input,该对象将正确的数据提供给 WSGI 应用程序。

然后我创建了一个合适的 start_response() 方法来保存标题,并调用

resultData = app.wsgi_app(environ, start_response)

Flask 应用程序会完成推送请求和环境的所有 Action ,并执行所有路由,然后我将返回的数据返回到 resultData 中(并且带有任何错误等的 header 已被传递)到我的 start_response 方法)。

关于python - web.py app.request() 的 Flask/Werkzeug 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52822268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com