import flask
from flask import request
from pacfiletesterAPI import PacFileTester
from urlparse import urlparse
from flask import jsonify
app = flask.Flask(__name__)
#app.config["DEBUG"] = False
@app.route('/pac')
def pac():
r = request.args.get('p')
url = request.args.get('u')
domain = request.args.get('d')
Parsed_url = urlparse(url)
Parsed_domain = urlparse(domain)
if r == '':
return "'not enough arguments, please provide a vaild url"
elif url == '':
if domain == '':
return "'not enough arguments, please provide a vaild url"
elif domain == '':
if url == '':
return "'not enough arguments, please provide a vaild domain"
if Parsed_url.netloc == '':
domain = Parsed_url.path.rstrip('/')
else:
domain = Parsed_url.netloc
if not Parsed_url.scheme != 'http' or Parsed_url.scheme != 'https':
url = 'https://' + domain
result = PacFileTester(r, url, domain)
return jsonify(result)
#app.run(host= '0.0.0.0')
if __name__ == "__main__":
app.run(host= '0.0.0.0')
我可以使用pythonapi.py很好地运行该文件
但当我试着和服务员一起运行时,我得到了以下错误
waitress-serve --call 'api:pac'
Traceback (most recent call last):
File "/usr/bin/waitress-serve", line 11, in <module>
sys.exit(run())
File "/usr/lib/python2.7/site-packages/waitress/runner.py", line 280, in run
app = app()
File "/var/www/html/cloud_test3/api.py", line 13, in pac
r = request.args.get('p')
File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 306, in _get_current_object
return self.__local()
File "/usr/lib64/python2.7/site-packages/flask/globals.py", line 38, in _lookup_req_object
raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.
This typically means that you attempted to use functionality that needed
an active HTTP request. Consult the documentation on testing for
information about how to avoid this problem.
我的问题是,为什么我会犯这个错误。我不相信我是在请求上下文之外工作的。它似乎在dev服务器上按我所希望的方式工作,但在任何其他wsgi服务器上都不行。服务员是唯一一个给我这个错误的人
请参阅
flask
文档中的topic这意味着
waitress
服务器无法加载带有此参数的Flask
应用程序api:pac
服务器启动并运行后,您可以调用该端点,如:
最后,我建议您在开发
Flask
应用程序时使用最佳实践看看这个topic关于如何使用
app factory
模式设置Flask
应用程序,您可能知道python 2
从jan 2020
开始就已经死了,不受支持,使用python 3
并更新所有依赖项我也有类似的问题,试着做类似的事情。当您由Waitess运行应用程序时,您只需调用一个名为“create_app”的函数,该函数包含您的所有flask应用程序。现在输入
waitress-serve call "<application_name>:create_app"
相关问题 更多 >
编程相关推荐