2014-11-05 54 views
0

我的項目是一個簡單的JSON + REST api服務器,它讀取/寫入到ndb並用JSON字典響應。我的項目中沒有backends.yaml文件。而我的app.yaml的內容是:沒有任何後端的後端實例小時數加起來

application: my-app 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

handlers: 
- url: /api/v1/.* 
    script: gprofile.application 


libraries: 
- name: webapp2 
    version: "2.5.2" 
- name: ssl 
    version: latest 
- name: jinja2 
    version: latest 

唯一的其他YAML在我的項目文件中有一對夫婦的自動生成index.yaml中的文件。 但我後端堆積如山。按照儀表板,我每小時累積8個後端實例小時,即我以某種方式運行8個後端實例。在我的項目目錄運行appcfg.py -v backends . list給出了下面的輸出:

Application: my-app 
Warning: This application uses Backends, a deprecated feature that has been replaced by Modules, which offers additional functionality. Please convert your backends to modules as described at: https://developers.google.com/appengine/d 
Host: appengine.google.com 
2014-11-05 20:23:29,571 INFO appengine_rpc_httplib2.py:268 Too many retries for url https://appengine.google.com/api/backends/list?app_id=my-app 
Error 500: --- begin server output --- 
Server Error (500) 
A server error has occurred. 
--- end server output --- 

還有一個我注意到奇怪的事情是沒有額外的YAML文件,這些文件inspite,我仍然有定義(除了默認的模塊)3個額外的模塊。其中一個標記爲Resident,這意味着我無法從儀表板關閉它。

任何人都可以解釋我是如何定義沒有任何額外yaml文件的額外模塊,以及爲什麼我沒有backend.yaml後端帳單。

更新1:我能夠通過在「計算> App Engine>版本」下的儀表板中手動刪除未定義的模塊來刪除未定義的模塊。仍然無法弄清楚他們是如何到達那裏的。

更新2:我在開發過程中早些時候定義了一些後端。但是yaml以及相關的代碼已經被刪除。即使在更新我的項目之後,是否有可能舊的後端仍然存在?如果是的話,當appcfg甚至不能列出它們時,我將如何刪除它們。

回答

1

我想我可能已經找到了問題將不勝感激)

我認爲,一旦yaml文件(定義模塊或隊列等)被添加到應用程序引擎,你不能只是刪除yaml文件和更新項目,並期望現有的資源將自動除去。它們必須從儀表板本身中刪除。即使這樣做,必須先上傳新的yaml文件,這些文件表明它們不再被定義。

例如,在隊列的情況下,我必須先上傳一個空的queue.yaml,然後才能刪除在開發過程中很久以前創建並從未使用過的任務隊列。

對於模塊,我必須轉到「計算> App Engine>版本」並手動刪除模塊(即使這些模塊未在源中的任何位置定義)。

我積累的後端數小時可能是因爲Resident模塊,因爲自從刪除之後,現在當我運行appcfg.py backends . list時,我得到預期的No backends configured for app: s~my-app響應。我之前得到的500響應可能是因爲有問題的模塊沒有與之相關的源代碼。由於應用引擎反覆嘗試啓動此模塊並失敗(因爲它沒有源代碼),所以實例小時數正在累積,因爲它沒有源代碼

再次,這是基於假設刪除yaml文件不意味着資源清除,這是很難相信的。如果是這樣的話,Google應該在某處記錄下這種行爲。

0

即使它應該選擇這個默認情況下,我會嘗試加入「模塊」鍵至app.yaml:我的假設(確認

application: my-app 
    module: default 
    version: 1 
    runtime: python27 
    api_version: 1 
    threadsafe: yes 
+0

是的,它默認採用默認模塊。我能夠刪除額外的模塊(在我的問題更新)。 – 2014-11-05 17:58:09

+0

我認爲問題是從源文件中刪除yaml文件並不意味着刪除了該功能。例如。我注意到一個冗餘的任務隊列,即使沒有queue.yaml,也意識到某些其他的dev在某個時候添加了一個queue.yaml,然後刪除了queue.yaml文件。爲了解決這個問題,我不得不重新添加一個空的queue.yaml文件,任務隊列從儀表板中消失。我猜測額外的模塊也是由同一個開發人員在某個時候添加的,然後就被刪除了(我無法證實這一點,因爲我們之前沒有任何版本控制) – 2014-11-05 18:01:41