我正在研究一个烧瓶API,它工作得很好。我现在试图用uWSGI替换Flask开发服务器,但一切都崩溃了。我试图解决这个问题,因为2天,通过教程和搜索这里,但找不到一个解决问题的方法。这是代码:app.py
import logging.config
import settings
import utils
from flask import Flask, Blueprint
from flask_restplus import Resource, Api
from flask_cors import CORS
from api.restplus import api
from api.gan.endpoints.client import ns as gan_client_namespace
# create Flask application
app = Flask(__name__)
CORS(app) # needed for cross-domain requests, allow everything by default
# load logging confoguration and create log object
logging.config.fileConfig('logging.conf')
log = logging.getLogger(__name__)
#
@app.route("/")
def hello():
return "Hello World!"
def __get_flask_server_params__():
'''
Returns connection parameters of the Flask application
:return: Tripple of server name, server port and debug settings
'''
server_name = utils.get_env_var_setting('FLASK_SERVER_NAME', settings.DEFAULT_FLASK_SERVER_NAME)
server_port = utils.get_env_var_setting('FLASK_SERVER_PORT', settings.DEFAULT_FLASK_SERVER_PORT)
flask_debug = utils.get_env_var_setting('FLASK_DEBUG', settings.DEFAULT_FLASK_DEBUG)
flask_debug = True if flask_debug == '1' else False
return server_name, server_port, flask_debug
def configure_app(flask_app, server_name, server_port):
'''
Configure Flask application
:param flask_app: instance of Flask() class
'''
flask_app.config['SERVER_NAME'] = server_name + ':' + server_port
flask_app.config['SWAGGER_UI_DOC_EXPANSION'] = settings.RESTPLUS_SWAGGER_UI_DOC_EXPANSION
flask_app.config['RESTPLUS_VALIDATE'] = settings.RESTPLUS_VALIDATE
flask_app.config['RESTPLUS_MASK_SWAGGER'] = settings.RESTPLUS_MASK_SWAGGER
flask_app.config['ERROR_404_HELP'] = settings.RESTPLUS_ERROR_404_HELP
def initialize_app(flask_app, server_name, server_port):
'''
Initialize Flask application with Flask-RestPlus
:param flask_app: instance of Flask() class
'''
blueprint = Blueprint('tf_api', __name__, url_prefix='/tf_api')
configure_app(flask_app, server_name, server_port)
api.init_app(blueprint)
api.add_namespace(gan_client_namespace)
flask_app.register_blueprint(blueprint)
#from werkzeug.contrib.fixers import ProxyFix
#flask_app.wsgi_app = ProxyFix(flask_app.wsgi_app)
def main():
server_name, server_port, flask_debug = __get_flask_server_params__()
initialize_app(app, server_name, server_port)
log.info(
'>>>>> Starting TF Serving client at http://{}/ >>>>>'.format(app.config['SERVER_NAME'])
)
app.run(debug=flask_debug, host=server_name)
if __name__ == '__main__':
main()
当我用Python app.py
运行这个函数时,它工作得很好。
现在我只是尝试使用UWSGI获得相同的结果:
uwsgi --http :8000 --wsgi-file app.py --callable app
命令行消息看起来很好:
命令行消息
我试过所有想到的事情,但都没能解决这个问题。我做的一些事情是:
>
包括以下代码:
从werkzeug.contrib.fixers导入ProxyFix flask_app.wsgi_app=ProxyFix(flask_app.wsgi_app)
initialize_app中的所有内容都是wsgi服务器不可见的,这将起作用
import logging.config
import settings
import utils
from flask import Flask, Blueprint
from flask_restplus import Resource, Api
from flask_cors import CORS
from api.restplus import api
from api.gan.endpoints.client import ns as gan_client_namespace
# create Flask application
app = Flask(__name__)
CORS(app) # needed for cross-domain requests, allow everything by default
# load logging confoguration and create log object
logging.config.fileConfig('logging.conf')
log = logging.getLogger(__name__)
#
@app.route("/")
def hello():
return "Hello World!"
server_name = utils.get_env_var_setting('FLASK_SERVER_NAME', settings.DEFAULT_FLASK_SERVER_NAME)
server_port = utils.get_env_var_setting('FLASK_SERVER_PORT', settings.DEFAULT_FLASK_SERVER_PORT)
flask_debug = utils.get_env_var_setting('FLASK_DEBUG', settings.DEFAULT_FLASK_DEBUG)
flask_debug = True if flask_debug == '1' else False
app.config['SERVER_NAME'] = server_name + ':' + server_port
app.config['SWAGGER_UI_DOC_EXPANSION'] = settings.RESTPLUS_SWAGGER_UI_DOC_EXPANSION
app.config['RESTPLUS_VALIDATE'] = settings.RESTPLUS_VALIDATE
app.config['RESTPLUS_MASK_SWAGGER'] = settings.RESTPLUS_MASK_SWAGGER
app.config['ERROR_404_HELP'] = settings.RESTPLUS_ERROR_404_HELP
blueprint = Blueprint('tf_api', __name__, url_prefix='/tf_api')
api.init_app(blueprint)
api.add_namespace(gan_client_namespace)
flask_app.register_blueprint(blueprint)
def main():
log.info(
'>>>>> Starting TF Serving client at http://{}/ >>>>>'.format(app.config['SERVER_NAME'])
)
app.run(debug=flask_debug, host=server_name)
if __name__ == '__main__':
main()
我有一个用TestNG运行的简单代码,但是我不能用Gradle运行,因为它说没有找到主方法,这并不奇怪,因为我使用注释。 但在这种情况下,如果必须使用Gradle,如何运行代码。 请注意,我对Gradle很陌生,对这方面的知识不多。 代码: 上面的代码与TestNG库完美运行。然而不是格拉德尔。 以下是我的Gradle构建设置: Gradle返回没有Main方法。 谢谢你的帮助。
我想用Axis2构建一个客户端(只是一个客户端)。我使用Maven和OSGi(Felix)。我使用Maven成功地安装了它,但是当我使用PAX provision运行它时,出现了一系列错误。这是我在POM中的初始配置(加上AXIOM和WSDL4j的更多依赖项)。 这很好,但当我做pax:provision时 错误:Bundle axis2-transport-local[33]错误启动文件:bun
如果将Xmx设置为967或更高的值,则无法运行java。 C:\documents and settings\salesforce>java-xmx967m-VM初始化时发生版本错误,无法为对象堆预留足够的空间。错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。 在执行命令之前,有3GB的ram可用(任务管理器)。 环境: Java 1.7.0_25 32bits Windows se
我遵循了这些指示。这就是JDK和JavaFX的位置: VM参数为: 请帮助识别和整改问题。(我尝试了以下建议的几种方法,但似乎没有任何效果。)
谢谢你的任何提示或帮助。
问题内容: 我正在尝试运行Python工作。我创建了以下文件夹: C:\ Users \ herod \ jenkins_ws \ workspace \ window_testing 并添加了脚本“ testing.py”。 该脚本非常简单: 但是从Jenkins运行它时出现以下错误(如果我从命令行运行它会起作用): 我究竟做错了什么 ? 这是我尝试过的: 在构建部分的作业配置中,我选择“执行p