我在 appengine python 中延迟了任务,这是一个简单的调用,包含所有 task_info 字符串,字符串列表。它适用于任何任务。
deferred.defer(fetch_service,
_queue = "queue_name",
_countdown = task_counter * 4,
**task_info )
我观察到一个奇怪的行为,当我访问不同 URL 或不同模块中的某些端点或 UI 时,此延迟调用开始失败。每个不同的调用都会引发相同的问题。
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 145, in run
raise PermanentTaskFailure(e)
PermanentTaskFailure: None.fetch_service forbidden in unpickling
寻求任何帮助,或其他面临相同问题的人。
请您参考如下方法:
此问题特定于 GAE python scaffold由谷歌提供。有一个允许 pickle 的方法白名单。
如果您将 fetch_service 方法添加到 base/api_fixers.py 列表中的 _PICKLE_CLASS_WHITELIST 中,它将起作用。
