gpt4 book ai didi

python - 使用 CherryPy/Cherryd 启动多个 Flask 实例

转载 作者:太空狗 更新时间:2023-10-29 18:31:51 24 4
gpt4 key购买 nike

根据 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}

无需深入研究我的 Flask 服务器,下面是它的启动方式:

import flask
app = flask.Flask(__name__)

@app.route('/')
def hello_world():
return "hello"

这是我在命令行上发出的命令,用于启动 Cherryd:

cherryd -c cherrypy.conf -i my_flask_server

问题是:

  1. 将 Flask 包装在 CherryPy 中是否仍然是在生产中使用 Flask 的首选方法? https://stackoverflow.com/questions/4884541/cherrypy-vs-flask-werkzeug

  2. 这是使用 .conf 文件启动 CherryPy 并导入 Flask 应用程序的正确方法吗?我已经搜索了 CherryPy 文档,但我找不到任何与我在这里具体尝试做的事情相匹配的用例。

  3. 是在单台机器上启动多个 CherryPy/Flask 实例以执行多个 cherryd 命令(使用 -d 进行守护进程等)的正确方法,每个端口(8891、8892、8892、8892、 ETC)?或者是否有更好的“CherryPy”方法来完成此任务?

感谢您的帮助和见解。

最佳答案

我不能代表 Flask,但我可以代表 CherryPy。这看起来像是“正确的方式”......主要是。关于 MethodDispatcher 的那一行是空操作,因为它只影响 CherryPy 应用程序,而且您似乎没有安装任何应用程序(只是一个 Flask 应用程序)。

关于第 3 点,你说对了。 CherryPy 允许您在同一个进程中运行多个 Server 对象以监听多个端口(或协议(protocol)),但它没有任何启动多个进程的功能。正如您所说,具有不同配置文件的多个 cherryd 命令是如何做到的(除非您想使用更集成的集群/配置管理工具,如 eggmonster)。

关于python - 使用 CherryPy/Cherryd 启动多个 Flask 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982638/

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