首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试/开发模式

调试/开发模式
EN

Stack Overflow用户
提问于 2014-08-13 06:47:32
回答 1查看 1.3K关注 0票数 4

我正在做一个App项目(Python),在这个项目中,我们希望在调试/开发时(通常是在本地)对应用程序的行为进行某些更改。例如,在调试时,我们希望禁用限速装饰器,打开WSGIApplication中的调试param,可能会添加一些断言。

据我所知,App自然没有任何关于全局开发模式或调试模式的概念,所以我想知道如何最好地实现这种模式。到目前为止,我能想到的选择是:

  1. 使用google.appengine.api.app_identity.get_default_version_hostname()获取主机名,并检查它是否以localhost开头。这看起来..。不可靠,不允许在部署的应用程序实例中使用调试模式。
  2. 使用os.environ.get('APPLICATION_ID')获取应用程序id,根据此页,开发服务器自动将应用程序id与dev~放在前面。令人担忧的是,这些信息的来源就在一个警告框中: 不要从环境变量中获取App。开发服务器模拟生产应用程序引擎服务。它这样做的一种方法是将一个字符串(dev~)添加到APPLICATION_ID环境变量,该变量类似于在生产中为使用高复制数据存储的应用程序所加的字符串。您可以使用--default_master标志修改此行为,选择一个值"“来匹配生产中的主从选项。如上文所述,谷歌建议始终使用get_application_id获取应用程序ID。

不确定这是否是环境变量的可接受使用。无论是哪种方式,它可能都是同样的黑客,并且只处理本地运行的实例的问题也是一样的。

  1. 使用定制的app-id进行开发(本地和部署),在dev_appserver.py中使用dev_appserver.py标志,在代码中使用google.appengine.api.app_identity.get_application_id()。我不喜欢这样做有很多原因(即必须有两个独立的应用程序引擎项目)。
  2. 使用dev应用程序引擎版本进行开发,并在代码中使用os.environ.get('CURRENT_VERSION_ID').split('.')[0]进行检测。在部署时,这很容易,但我不知道如何使dev_appserver.py使用自定义版本而不修改app.yaml。我想我可以将sed app.yaml转换为/tmp/中的临时文件,替换版本并解析相关路径(或者只创建一个持久的dev-app.yaml),然后将其传递给dev_appserver.py。但这似乎也有点肮脏,容易出现错误/同步问题。

我错过其他方法了吗?有什么我没意识到的吗?还有其他建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 14:41:27

关于“检测”本地主机开发,我们在应用程序设置/配置文件中使用以下内容。

代码语言:javascript
复制
IS_DEV_APPSERVER = 'development' in os.environ.get('SERVER_SOFTWARE', '').lower()

与调试标志一起使用的代码应该可以帮您完成任务。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25279731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档