2017-05-06 96 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'中以供運行時拾取 –