Python 如何查看Flask应用程序是否正在本地主机上运行?

Python 如何查看Flask应用程序是否正在本地主机上运行?,python,localhost,flask,Python,Localhost,Flask,我希望我的Flask应用程序在本地主机上运行和在线托管时具有不同的行为。当flask应用程序位于localhost和部署时,我如何从中进行检测?您将要了解,最具体地说。总结一下,您要做的是: 加载源代码管理中保留的基本配置,并为需要具有某些值的内容加载合理的默认值。任何需要价值的东西都应该将价值设定为对生产而不是对发展有意义的价值 从通过提供环境特定设置(例如数据库URL)的环境变量发现的路径加载附加配置 代码中的一个示例: from __future__ import absolute_i

我希望我的Flask应用程序在本地主机上运行和在线托管时具有不同的行为。当flask应用程序位于localhost和部署时,我如何从中进行检测?

您将要了解,最具体地说。总结一下,您要做的是:

  • 加载源代码管理中保留的基本配置,并为需要具有某些值的内容加载合理的默认值。任何需要价值的东西都应该将价值设定为对生产而不是对发展有意义的价值
  • 从通过提供环境特定设置(例如数据库URL)的环境变量发现的路径加载附加配置
代码中的一个示例:

from __future__ import absolute_imports
from flask import Flask
import .config  # This is our default configuration

app = Flask(__name__)

# First, set the default configuration
app.config.from_object(config)

# Then, load the environment-specific information
app.config.from_envvar("MYAPP_CONFIG_PATH")

# Setup routes and then ...

if __name__ == "__main__":
    app.run()

另请参见

的文档这里有一种方法。关键是将当前根url
flask.request.url\u root
与要匹配的已知url值进行比较

摘自github回购协议


所有网站都始终在本地主机上运行。毕竟,他们是在主机上。您的意思是,如果通过
http://localhost...
?您不应该有一个开发配置文件和一个部署配置文件吗?我尝试了这个方法,但使用“request.url\u root”时出现了这个错误:RuntimeError:在请求上下文之外工作。这通常意味着您试图使用需要活动HTTP请求的功能。有关如何避免此问题的信息,请参阅测试文档。你知道为什么吗?在谷歌上搜索,人们经常谈论使用request.url\u root,但我看没有其他人会遇到这种错误。
from flask import Flask, request

def is_production():
    """ Determines if app is running on the production server or not.
    Get Current URI.
    Extract root location.
    Compare root location against developer server value 127.0.0.1:5000.
    :return: (bool) True if code is running on the production server, and False otherwise.
    """
    root_url = request.url_root
    developer_url = 'http://127.0.0.1:5000/'
    return root_url != developer_url