Python 使用Django的AppEngine应用程序无法加载
Django不断导致我们的应用程序崩溃。部署后,应用程序运行正常,但一旦重新启动/关闭初始实例,它通常无法启动,并出现类似以下错误: 这是我们当前的appengine_config.py:Python 使用Django的AppEngine应用程序无法加载,python,django,google-app-engine,python-2.7,Python,Django,Google App Engine,Python 2.7,Django不断导致我们的应用程序崩溃。部署后,应用程序运行正常,但一旦重新启动/关闭初始实例,它通常无法启动,并出现类似以下错误: 这是我们当前的appengine_config.py: import sys import logging logging.debug(",\n".join(sys.path)) # Since Google App Engine's webapp framework uses Django templates, Django will half-init
import sys
import logging
logging.debug(",\n".join(sys.path))
# Since Google App Engine's webapp framework uses Django templates, Django will half-initialize when webapp is loaded.
# This causes the initialization of the rest of Django's setting to be skipped. If you are getting this error, you need
# to explicitly force Django to reload your settings:
from django.conf import settings
settings._target = None
从appengine_config.py记录sys.path不会在成功实例启动和失败实例启动之间改变(当然除了XXXXXXXXXX位):
正如人们在你的问题评论中提到的,这似乎是一个与路径相关的问题 可能的短视解决方案手动将所有内容添加到路径中-请查看此处的顶部答案: 至少,这将有助于将问题缩小到与路径相关的范围 医生说: Python模块include路径包含应用程序的根目录 目录(包含app.yaml文件的目录)。模块你 可以使用路径在应用程序的根目录中创建 从根本上说。不要忘记在中创建init.py文件 子目录,因此Python将子目录识别为 包裹 因此,从我所知道的,b/c所有内容都位于app.yaml文件或以下。在您的问题中,路径应该已经正确
\uuuu init\uuuuu.py
文件是否到位,拼写是否正确李>
*.pyc
文件并重新生成它们文件夹导入,其中包含\u YAML.myfolder.middleware
将以下行添加到app.yaml 图书馆: -名称:MySQLdb 版本:“最新” 它在这里的文档中。 理想情况下,应将其记录在GCM DJANGO指南中。会节省我很多时间
Praveen检查实例启动请求中是否出现DeadLineExceeDerror。如果您未使用预热请求,则导入失败的部分启动实例在稍后收到请求时可能会显示奇怪的导入错误。我们没有收到它。它开始得很快(实际上失败得很快)。你说的快速失败是什么意思?在你最初的帖子中,你说实例可以在失败之前运行一天。我认为你需要详细说明这一点“有时模块会在再次崩溃之前保持一整天。加载失败后,所有后续请求都会失败,并出现相同的错误。“你说的“再次崩溃”是什么意思?你可以在appengine_config.py中记录sys.path,它将始终在你的任何请求之前运行。这可能会帮助你了解发生了什么。此外,你可以在app.handler周围包装一个try/except块,并在那里执行日志记录。Thaks很多。删除
*.pyc
文件有帮助。
|- app.yaml
|- _ _ init _ _.py
|- settings.py
|- myfolder |
| |- _ _ init _ _.py
| |- middleware.py
| |- ...
|-...
|
application: XXXXX
module: app
version: master
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /api/(login|logout|passwd|master.|banners.)
script: app.handler
secure: always
...
builtins:
- django_wsgi: on
libraries:
- name: django
version: 1.5
env_variables:
DJANGO_SETTINGS_MODULE: 'settings'
Traceback (most recent call last):
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 266, in Handle
result = handler(dict(self._environ), self._StartResponse)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/core/handlers/wsgi.py", line 236, in __call__
self.load_middleware()
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/core/handlers/base.py", line 45, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/conf/__init__.py", line 53, in __getattr__
self._setup(name)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/conf/__init__.py", line 48, in _setup
self._wrapped = Settings(settings_module)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/conf/__init__.py", line 134, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'settings' (Is it on sys.path?): No module named myfolder.settings
Traceback (most recent call last):
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 239, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/lib_config.py", line 353, in __getattr__
self._update_configs()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/lib_config.py", line 289, in _update_configs
self._registry.initialize()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/lib_config.py", line 164, in initialize
import_func(self._modname)
File "/base/data/home/apps/s~blue-myapp/app:master.375531077560785947/appengine_config.py", line 17, in
settings._target = None
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/utils/functional.py", line 227, in __setattr__
self._setup()
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/conf/__init__.py", line 48, in _setup
self._wrapped = Settings(settings_module)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5/django/conf/__init__.py", line 134, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'settings' (Is it on sys.path?): No module named myfolder.settings
import sys
import logging
logging.debug(",\n".join(sys.path))
# Since Google App Engine's webapp framework uses Django templates, Django will half-initialize when webapp is loaded.
# This causes the initialization of the rest of Django's setting to be skipped. If you are getting this error, you need
# to explicitly force Django to reload your settings:
from django.conf import settings
settings._target = None
/base/data/home/apps/s~blue-persomi/app:master.3759720XXXXXXXXXXX,
/base/data/home/runtimes/python27/python27_dist/lib/python27.zip,
/base/data/home/runtimes/python27/python27_dist/lib/python2.7,
/base/data/home/runtimes/python27/python27_dist/lib/python2.7/plat-linux2,
/base/data/home/runtimes/python27/python27_dist/lib/python2.7/lib-tk,
/base/data/home/runtimes/python27/python27_dist/lib/python2.7/lib-old,
/base/data/home/runtimes/python27/python27_dist/lib/python2.7/lib-dynload,
/base/data/home/runtimes/python27/python27_dist/lib/python2.7/site-packages,
/base/data/home/runtimes/python27/python27_lib/versions/1,
/base/data/home/runtimes/python27/python27_lib/versions/third_party/MySQLdb-1.2.4b4,
/base/data/home/runtimes/python27/python27_lib/versions/third_party/django-1.5,
/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0,
/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2,
/base/data/home/runtimes/python27/python27_lib/versions/third_party/webob-1.1.1,
/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10