Python - 如何 运行 来自同一客户端机器的多个 Flask 应用程序
Python - How to run multiple flask apps from same client machine
我有一个 Flask 应用程序脚本,如下所示:
from flask import Flask
app = Flask(__name__)
@app.route("/<string:job_id>")
def main(job_id):
return "Welcome!. This is Flask Test Part 1"
if __name__ == "__main__":
job_id = 1234
app.run(host= '0.0.0.0')
我有另一个 flask 应用脚本如下:
from flask import Flask
app = Flask(__name__)
@app.route("/<string:ID>")
def main(ID):
return "Welcome!. This is Flask Test Part 2"
if __name__ == "__main__":
ID = 5678
app.run(host= '0.0.0.0')
两个脚本之间的唯一区别是参数名称及其值。现在我的问题是假设我正在执行第一个脚本。所以我会得到类似
的东西
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
当我在浏览器中执行 http://127.0.0.1:5000/1234 时,我可以看到
"Welcome!. This is Flask Test Part 1"
现在此服务器处于活动状态,我正在执行第二个脚本。所以我又得到
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
但是当我在浏览器中执行 http://127.0.0.1:5000/5678 时,我能够看到
"Welcome!. This is Flask Test Part 1"
而不是
"Welcome!. This is Flask Test Part 2"
我不明白我哪里做错了。任何输入或更改都会有所帮助
Flask 开发服务器默认侦听端口 5000
,因此当您 运行 没有端口号的 Flask 应用程序时,它会 运行 在 5000
.
您可以 运行 在同一台机器上使用不同端口号的多个 Flask 应用程序。假设您的脚本名称是 script1.py
和 script2.py
:
$ export FLASK_APP=script1.py
$ flask run --host 0.0.0.0 --port 5000
打开一个新终端
$ export FLASK_APP=script2.py
$ flask run --host 0.0.0.0 --port 5001
尽管 建议 运行 两个具有不同 --port
参数的烧瓶服务器,我想分享另一个要考虑的问题:
清除浏览器缓存
您是否在 运行 执行第二个脚本之前清除了缓存内存?
有时浏览器仍然存储 URL(包括第一个端口)的先前数据。因此它将显示旧数据(来自第一个脚本和端口)而不是获取新数据(来自第二个脚本和端口)。
您可以清除缓存内存,然后 运行 第二个脚本,在浏览器中访问并看到它从第二个应用程序的 URL.
中正确获取数据
对于这个问题,我有一个非常简单的解决方案,只需在您的代码中添加以下行即可 app.run(port=3000)
简单地假设您的第一个应用程序正在使用 5000 端口工作,并且您尝试执行另一个 flask 应用程序,它可能使用相同的端口 5000 所以这就是为什么您可能会遇到这些问题所以只需将这行代码添加到您可以更改端口号以在另一个端口上执行应用程序。
示例:
if __name__ == '__main__':
app.run(port=3000)
注意:您可以输入任何您选择的端口而不是端口 3000
我有一个 Flask 应用程序脚本,如下所示:
from flask import Flask
app = Flask(__name__)
@app.route("/<string:job_id>")
def main(job_id):
return "Welcome!. This is Flask Test Part 1"
if __name__ == "__main__":
job_id = 1234
app.run(host= '0.0.0.0')
我有另一个 flask 应用脚本如下:
from flask import Flask
app = Flask(__name__)
@app.route("/<string:ID>")
def main(ID):
return "Welcome!. This is Flask Test Part 2"
if __name__ == "__main__":
ID = 5678
app.run(host= '0.0.0.0')
两个脚本之间的唯一区别是参数名称及其值。现在我的问题是假设我正在执行第一个脚本。所以我会得到类似
的东西* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
当我在浏览器中执行 http://127.0.0.1:5000/1234 时,我可以看到
"Welcome!. This is Flask Test Part 1"
现在此服务器处于活动状态,我正在执行第二个脚本。所以我又得到
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
但是当我在浏览器中执行 http://127.0.0.1:5000/5678 时,我能够看到
"Welcome!. This is Flask Test Part 1"
而不是
"Welcome!. This is Flask Test Part 2"
我不明白我哪里做错了。任何输入或更改都会有所帮助
Flask 开发服务器默认侦听端口 5000
,因此当您 运行 没有端口号的 Flask 应用程序时,它会 运行 在 5000
.
您可以 运行 在同一台机器上使用不同端口号的多个 Flask 应用程序。假设您的脚本名称是 script1.py
和 script2.py
:
$ export FLASK_APP=script1.py
$ flask run --host 0.0.0.0 --port 5000
打开一个新终端
$ export FLASK_APP=script2.py
$ flask run --host 0.0.0.0 --port 5001
尽管 --port
参数的烧瓶服务器,我想分享另一个要考虑的问题:
清除浏览器缓存
您是否在 运行 执行第二个脚本之前清除了缓存内存?
有时浏览器仍然存储 URL(包括第一个端口)的先前数据。因此它将显示旧数据(来自第一个脚本和端口)而不是获取新数据(来自第二个脚本和端口)。
您可以清除缓存内存,然后 运行 第二个脚本,在浏览器中访问并看到它从第二个应用程序的 URL.
中正确获取数据对于这个问题,我有一个非常简单的解决方案,只需在您的代码中添加以下行即可 app.run(port=3000)
简单地假设您的第一个应用程序正在使用 5000 端口工作,并且您尝试执行另一个 flask 应用程序,它可能使用相同的端口 5000 所以这就是为什么您可能会遇到这些问题所以只需将这行代码添加到您可以更改端口号以在另一个端口上执行应用程序。
示例:
if __name__ == '__main__':
app.run(port=3000)
注意:您可以输入任何您选择的端口而不是端口 3000