2017-05-06 95 views
0

当谷歌App Engine上运行的应用程序烧瓶,它抛出我,我为我的应用程序在8080端口上 所以我指定的端口瓶在端口5000上运行谷歌应用程序引擎

if __name__ == "__main__": 
    app.run(port=8080) 
错误

但在App Engine上运行它,它表明我的应用程序仍然是服务于https://127.0.0.1:5000

编辑:我上运行的应用程序的某个地方混淆,所以我试图运行在本地使用dev_appserver.py app.yaml应用(这样会引发错误) 在运行dev_appserver.py ./运行的服务器,但我在页是空白,而我得到的终端的错误,这是无法导入Python模块,即使我已经做了appengine_config.py脚本,并下载到它的所有Python包一个lib子文件夹。

我的项目结构为:

root/ -app.py --lib/ --static/ --templates/ -app.yaml -appengine_config.py

编辑:服务器似乎是现在运行良好,但仍无法导入Python包(我安装了上述lib文件夹中,我也使用了系统黑客)这里的错误:

Traceback (most recent call last): 
    File "/home/padam/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/home/padam/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler 
    handler, path, err = LoadObject(self._handler) 
    File "/home/padam/Downloads/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject 
    obj = __import__(path[0]) 
    File "/home/padam/Documents/git/gae-fumen/app.py", line 4 
    from flask import Flask, render_template, jsonify, request 
    ^

我该如何解决它?

+0

您需要在重新启动之前停止正在运行的服务器... –

+0

假设您正在为标准环境开发,您可能还想看看官方Hello World回购 - https://github.c om/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/flask/hello_world – alpeware

+0

@LaurentLAPORTE我做了 –

回答

0

创建一个单独的config.py文件来配置像你的数据库和端口设置,

DEBUG = True 
PORT = 8000 
HOST = "127.0.0.1" 
SECRET_KEY = "SOME SECRET" 

现在再创建一个单独的文件app.py和下面写代码,

from app import create_app 

app = create_app('config') 

    if __name__ == '__main__': 
     app.run(host=app.config['HOST'], 
       port=app.config['PORT'], 
       debug=app.config['DEBUG']) 

它应该工作。

+0

这是肯定更可配置的,但逻辑上代码几乎与问题中的一样。 –

+0

@AdamByrtek说,两者在逻辑上是一样的,但我仍然会尝试 –

+0

尝试它仍然得到相同的输出 '*在http://127.0.0.1:5000/上运行(按CTRL + C以退出) *用stat重启 *调试器处于活动状态! *调试器PIN:122-141-330' –

1

除非你是在柔性运行时,在本地运行标准的应用程序引擎的应用程序,你需要使用dev_appserver。在项目的根目录,你可以运行dev_appserver.py .

随着app.py符合以下要求内容:

from flask import Flask 

app = Flask(__name__) 

# define a few routes here or in app.yaml 

@app.route('/') 
def home(): 
    """Root page""" 
    return 'home' 

然后定义如何在您的项目app.yaml的处理器部分启动烧瓶应用:

handlers: 
- url: .* 
    script: app.app # a reference to your app object defined in app.py 

这应该让应用程序引擎设置。​​


编辑: 上开始使用在以下回购App Engine和烧瓶更多信息 了解更多关于它的环境对here

app.yaml的内容运行表明您正在使用flexible runtime。如runtime: pythonentrypoint:...。如果你想坚持灵活的运行时间,那很好。您首先必须在本地安装您的依赖关系。首选方法是virtual environment

如果你想要的是app engine standard,根据你的文件/文件夹的布局,您app.yaml的结构将一些接近:

runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: app.app 

与App Engine标准,使用烧瓶,那么你就安装与pip install flask -t lib安装烧瓶到您的lib文件夹中,然后再运行应用程序dev_appserver.py

+0

嘿谢谢,现在它似乎运行,但我仍然无法使用python软件包。 –

+0

**编辑:** 嘿谢谢,现在它似乎运行,但我仍然无法使用Python包。应该'app.yaml'包括 库' 我试过指定库,但它给了我这个 'google.appengine.api.yaml_errors.EventError:库“flask”不支持 在“./app。 yaml“,第11行,第1列# –

+0

烧瓶不是内置的第三方库,如果是标准版,你可以在你的lib文件夹中通过托管,'pip install flask -t lib'安装依赖项。如果在flex上,你将flask安装到你的virtualenv中供本地使用,但是在部署到产品时将它声明在'requirements.txt'中以供运行时拾取 –