我在同一個實例上發生了20次這樣的錯誤,然後在實例因處理太多順序錯誤而死亡後消失。我的代碼沒有做任何更改,這是我唯一見過這種情況的時間。App Engine AttributeError:'模塊'對象沒有'事件'屬性
問題:
- 在我的代碼是什麼類型的問題可能會導致這與某些情況下才會發生?我不知道從哪裏開始尋找,因爲我無法重現問題。
- 有沒有一種方法可以減少實例在被殺死之前所允許的順序錯誤的數量,所以如果它再次發生,這不會造成太大的破壞?
這是第一個日誌,我從這個例子有(沒有錯誤):
2012-10-05 18:41:03.266 /rpc/?action=ServerAvailable 500 60908ms 0kb popwords/1.2 CFNetwork/548.1.4 Darwin/11.4.2
98.207.195.103 - - [05/Oct/2012:11:41:03 -0700] "GET /rpc/?action=ServerAvailable HTTP/1.1" 500 0 - "popwords/1.2 CFNetwork/548.1.4 Darwin/11.4.2" "www.popwordsapp.appspot.com" ms=60909 cpu_ms=498 loading_request=1 instance=00c61b117c8f8b7f701c0776284c25a64c7ff329
I 2012-10-05 18:41:03.265
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.
這是一個日誌從這個實例(第一個有誤差):
2012-10-05 18:49:38.704 /rpc/?action=ServerAvailable 500 867ms 0kb popwords/1.2 CFNetwork/548.1.4 Darwin/11.4.2
98.207.195.103 - - [05/Oct/2012:11:49:38 -0700] "GET /rpc/?action=ServerAvailable HTTP/1.1" 500 0 - "popwords/1.2 CFNetwork/548.1.4 Darwin/11.4.2" "www.popwordsapp.appspot.com" ms=867 cpu_ms=86 instance=00c61b117c8f8b7f701c0776284c25a64c7ff329
E 2012-10-05 18:49:38.103
Traceback (most recent call last):
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 195, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 239, in _LoadHandler
handler = __import__(path[0])
File "/base/data/home/apps/s~popwordsapp/1.362183705604897547/main.py", line 40, in <module>
from google.appengine.ext import db
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/ext/db/__init__.py", line 98, in <module>
from google.appengine.api import datastore
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 62, in <module>
from google.appengine.datastore import datastore_query
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/datastore/datastore_query.py", line 64, in <module>
from google.appengine.datastore import datastore_index
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/datastore/datastore_index.py", line 62, in <module>
from google.appengine.api import yaml_object
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/yaml_object.py", line 36, in <module>
from google.appengine.api import yaml_listener
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/yaml_listener.py", line 34, in <module>
yaml.events.StreamStartEvent: 'StreamStart',
AttributeError: 'module' object has no attribute 'events'
在這兩個日誌之間有一個日誌創建了一個額外的實例(沒有錯誤)。沒有任何錯誤來自在第一個之後立即創建的另一個實例。由於處理了太多順序錯誤,它在第一個實例被終止後成功處理了請求。
你可以檢查你的日誌,看看該實例的第一個請求是否有DeadlineExceededError?如果是這樣,這是一個已知問題,即實例處於半初始狀態,唯一的恢復方法是關閉實例。 –
謝謝你的採訪。不,它沒有。我編輯了我的問題,添加了前兩個日誌和一些細節。 – user1139733
第一次請求肯定有錯誤(500次,超過60秒)。下一個請求也很有趣,因爲某些原因,它正在執行應用程序加載,只能對給定處理程序的第一個請求執行加載。 –