Tom*_*hew 10 python nginx cherrypy werkzeug flask
根据SO/SF和其他站点的建议,我使用CherryPy作为WSGI服务器来启动我使用Flask构建的Python Web服务器的多个实例.每个实例都在自己的端口上运行,并且位于Nginx之后.我应该注意下面的内容确实对我有用,但我很困扰我以错误的方式处理了事情并且它"偶然"起作用.
这是我目前的cherrypy.conf文件:
[global]
server.socket_host = '0.0.0.0'
server.socket_port = 8891
request.dispatch: cherrypy.dispatch.MethodDispatcher()
tree.mount = {'/':my_flask_server.app}
Run Code Online (Sandbox Code Playgroud)
没有潜入我的Flask服务器太远,这是它的开始:
import flask
app = flask.Flask(__name__)
@app.route('/')
def hello_world():
return "hello"
Run Code Online (Sandbox Code Playgroud)
以下是我在命令行上发布的与Cherryd一起启动的命令:
cherryd -c cherrypy.conf -i my_flask_server
Run Code Online (Sandbox Code Playgroud)
问题是:
在CherryPy中包装Flask仍然是在生产中使用Flask的首选方法吗? /sf/ask/341917901/
这是使用.conf文件启动CherryPy并导入Flask应用程序的正确方法吗?我已经搜索过CherryPy文档,但我找不到任何与我在这里特别要做的匹配的用例.
是在单个机器上启动多个CherryPy/Flask实例以执行多个cherryd命令(使用-d等进行守护程序)的正确方法,每个端口都使用唯一的.conf文件(8891,8892等)?或者有更好的"CherryPy"方法来实现这一目标吗?
感谢您的帮助和见解.
我不能代表Flask,但我可以为CherryPy说话.这看起来像是"正确的方式"......大多数情况下.关于MethodDispatcher的那一行是一个无操作,因为它只影响CherryPy应用程序,并且你似乎没有安装任何(只有一个Flask应用程序).
关于第3点,你说得对.CherryPy允许您在同一进程中运行多个Server对象,以便侦听多个端口(或协议),但它没有任何糖来启动多个进程.正如你所说,具有不同配置文件的多个cherryd命令是如何做到的(除非你想使用像eggmonster这样更集成的集群/配置管理工具).