【问题标题】:Google Cloud Console - Flask - main.py vs package谷歌云控制台 - 烧瓶 - main.py 与包
【发布时间】:2019-08-12 11:52:12
【问题描述】:

好的,所以我已经通过一些教程将烧瓶应用程序放到谷歌云上,这很好。

我也通过烧瓶教程建立了一个烧瓶博客: http://flask.pocoo.org/docs/1.0/tutorial/

我想到一个明智的做法是在 google 上创建一个数据库(在 mycase 中是 MySQL),然后修改代码以便它使用它。这很好,我可以让它在我的本地机器上工作。

但是,现在我要部署它,我遇到了一个问题。

谷歌云教程倾向于使用一个flask应用,它在main.py等单个文件中启动,例如:

from flask import Flask, render_template

app = Flask(__name__)
....

上面提到的烧瓶教程使用了一个包并将代码放在 __init__.py 文件中的 create_app() 中,目前我无法以相同的方式启动它。 (见示例代码)。

from flask import Flask

def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev'
    )

我是否需要对 app.yaml 文件之类的文件进行一些调整以使其将 flask 识别为 flaskr 包,或者我是否需要重写整个内容以便它使用 main.py 文件?

我觉得这是我真正可以养成坏习惯的时间点之一。一般来说,在谷歌云上编写烧瓶应用程序的首选方式是什么?

我使用的是google的标准环境。

感谢您的建议。

标记

【问题讨论】:

    标签: python-3.x google-app-engine flask


    【解决方案1】:

    由于您拥有应用程序工厂,因此您可以在任何地方创建应用程序。只需在 main.py 中创建它,因为这是 App Engine 所期望的:

    from my_package import create_app
    
    app = create_app()
    

    【讨论】:

    • 感谢您的帮助。我必须承认,我在谷歌云上发现了一些东西,表明默认情况下它会寻找 main.py 之类的东西来启动烧瓶,所以你不能默认使用这个包。出于这个原因,我开始按照您的建议进行操作,但是我不得不稍微更改代码,因为它在父目录而不是包中查找模板和静态文件。我认为也可以使用不同的命令行参数启动服务器,从而使用不同的目录,但我不太喜欢它的外观。我的观点是尽量保持简单。
    • 我完全同意你的看法,这应该是一种简单而优雅的方式来实现这一点。在这种情况下,我建议联系 GAE 客服(cloud.google.com/contact)。如果您解决了问题,请告诉我,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2016-12-18
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多