/ _ah / queue / deferred奇怪的导入错误

时间:2014-07-15 06:51:33

标签: python django google-app-engine djangoappengine

我使用djangoappengine模块在​​Google App Engine上运行django 1.5进行拼接。 一切正常,除了大约一半的/ _ah / queue / deferred调用引发以下导入错误:

Traceback (most recent call last):
  File "..../third_party/djangoappengine/deferred/handler.py", line 2, in <module>
    from djangoappengine import main
ImportError: No module named djangoappengine

如您所见,djangoappengine模块位于third_party目录中,此目录已添加到sys.path文件中的appengine_config.py,因此不应该出现任何问题from djangoappengine import main

sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'third_party'))

app.yaml中的相关行是:

handlers:
- url: /_ah/queue/deferred
  script: third_party/djangoappengine/deferred/handler.py
  login: admin

导致这些偶发导入错误的原因是什么?难道我做错了什么?也许有一个我不知道的导入循环?

2 个答案:

答案 0 :(得分:2)

发现我的代码使用旧的CGI接口而不是更新的WSGI。我修正了这个,问题从那以后就没有了。

更新了app.yaml

handlers:
- url: /_ah/queue/deferred
  script: djangoappengine.deferred.handler.application
  login: admin

答案 1 :(得分:1)

众所周知,deffer库可以通过第三方导入做一些时髦的事情。它与延迟任务加载新实例有关,第三方库缓慢加载。你有两个选择(第三个我不确定会起作用)

  • 使用标准的taskqueue调用。如果需要,我可以帮你重写。
  • 如果你只需要django 而不是特殊的djangoappengine库,你应该使用app引擎。它们可以保证装载。
  • 不知道这是否会起作用,但值得一试是将导入放在try循环中,直到它被加载为止。这只是一个从未尝试过这样做的想法