【发布时间】:2014-02-09 22:05:48
【问题描述】:
djangoappengine.views.warmup 会在 GAE 发送预热请求时加载所有 Django 应用程序。如果 GAE 没有发送预热请求,无论是由于请求峰值还是因为未启用预热服务,那么何时导入 INSTALLED_APPS?我看到 djangoappengine.deferred.handler.application 加载了所有 INSTALLED_APPS,但 djangoappengine.main.application 没有。
我遇到的问题是,如果没有预热请求,那么第一个加载请求处理程序或后续请求处理程序可能需要一个尚未注册的 nonrel-search 模型字段,因为搜索不是通过 INSTALLED_APPS 导入的因此 autodiscover() 尚未运行。
我的设置 MIDDLEWARE_CLASSES 确实有“autoload.middleware.AutoloadMiddleware”,所以我认为它可以在没有预热的情况下以这种方式加载,但事实并非如此。
在处理任何请求之前确保所有内容都已加载的解决方案是什么?
【问题讨论】:
-
我注意到官方的testapp除了使用autoload app及其中间件暴露多个入口点来加载搜索索引外,还在urls.py中显式调用了autodiscover,如下图:@987654321 @我想这就是这个问题的处理方式,虽然我不确定为什么这些不同的入口点没有以更连贯的方式统一。也许有人可以解释一下??
标签: django-nonrel djangoappengine