我不确定这是否是特定的Flask,但当我在dev模式下运行应用程序(http://localhost:5000)时,我无法从网络上的其他机器访问它(使用http://[dev-host-ip]:5000)。例如,当Rails处于开发模式时,它工作得很好。我找不到任何关于Flask开发服务器配置的文档。你知道应该配置什么来实现这个功能吗?


当前回答

在项目根目录中创建文件.flaskenv。

这个文件中的参数通常是:

FLASK_APP=app.py
FLASK_ENV=development
FLASK_RUN_HOST=[dev-host-ip]
FLASK_RUN_PORT=5000

如果您有一个虚拟环境,请激活它并执行pip install python-dotenv。

这个包将使用.flaskenv文件,其中的声明将自动跨终端会话导入。

然后你就可以进行长距离跑步了

其他回答

您还可以通过环境变量设置主机(将其暴露在面向IP地址的网络上)和端口。

$ export FLASK_APP=app.py
$ export FLASK_ENV=development
$ export FLASK_RUN_PORT=8000
$ export FLASK_RUN_HOST=0.0.0.0

$ flask run
 * Serving Flask app "app.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on https://0.0.0.0:8000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 329-665-000

参见如何获取所有可用的命令选项来设置环境变量?

进入项目路径 设置FLASK_APP = ABC.py 设置FLASK_ENV =发展

flask运行-h [yourIP] -p 8080 您将在CMD上执行o/p:- *服务Flask应用程序“experimental .py”(延迟加载) *环境:发展 *调试模式:打开 *重新启动stat 调试器已激活! *调试器PIN: 199-519-700 *运行http://[yourIP]:8080/(按CTRL+C退出)

检查服务器上的特定端口是否打开以服务客户端?

Ubuntu或Linux发行版

sudo ufw enable
sudo ufw allow 5000/tcp //allow the server to handle the request on port 5000

配置应用程序以处理远程请求

app.run(host='0.0.0.0' , port=5000)


python3 app.py & #run application in background

如果以上解决方案都不起作用,请尝试手动在url的开头添加“http://”。

Chrome可以从搜索查询中区分“[ip-address]:5000”。但有时候,这种方式会起作用一段时间,然后就停止了联系,似乎我什么都没改变。我的假设是浏览器有时可能会自动在https://前加上前缀(它不应该这样,但这在我的例子中解决了这个问题)。

如果你的酷应用程序从外部文件加载了它的配置,就像下面的例子,那么不要忘记用HOST="0.0.0.0"更新相应的配置文件

cool.app.run(
    host=cool.app.config.get("HOST", "localhost"),
    port=cool.app.config.get("PORT", 9000)
)