【发布时间】:2023-03-27 09:00:02
【问题描述】:
我的 Google AppEngine 网站正在使用延迟任务来完成大量额外工作。有时,延迟任务的数量会导致创建一个新实例。发生这种情况时,委派给这个新实例的所有任务都会失败,因为它们在实例有机会初始化之前就被发送到那里。如果在任务进入之前已经启动了足够多的实例,则不会出现问题。
以下是其中一项失败任务的示例:
Permanent failure attempting to execute task (/.../google/appengine/ext/deferred/deferred.py:327)
Traceback (most recent call last):
File "/.../google/appengine/ext/deferred/deferred.py", line 318, in post
self.run_from_request()
File "/.../google/appengine/ext/deferred/deferred.py", line 313, in run_from_request
run(self.request.body)
File "/.../google/appengine/ext/deferred/deferred.py", line 153, in run
raise PermanentTaskFailure(e)
PermanentTaskFailure: No module named django
有没有办法告诉延迟系统等到实例完全初始化后再向它发送任务?我正在为这个问题而脱发。
【问题讨论】:
-
当你说实例没有完全初始化,是指实例本身在启动运行之前正在接收任务,还是你在实例上的代码还没有初始化?
-
我已经编辑了问题以包含我遇到的错误示例。似乎代码试图在我的 Django 应用程序实际启动之前运行,因为该应用程序所做的第一件事就是修复 python 路径。
标签: python django google-app-engine deferred djangae