appengine延迟任务问题,执行引发未知错误

时间:2015-10-26 18:27:43

标签: python python-2.7 google-app-engine deferred-execution

我在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

寻找任何帮助,或其他遇到同样问题的人。

2 个答案:

答案 0 :(得分:4)

此问题特定于Google提供的GAE python scaffold。有一个允许被腌制的方法白名单。

如果您将fetch_service方法添加到_PICKLE_CLASS_WHITELIST列表中的base/api_fixers.py,则会有效。

答案 1 :(得分:1)

任务失败的PermanentTaskFailure异常indicates,永远不会成功。

这通常意味着当GAE infra尝试安排任务时遇到一些无效条件。

错误消息中的None.fetch_service字符串指向无效引用:None没有fetch_service属性。

这可能表示在无法访问fetch_service对象的模块中尝试执行任务。我检查显示错误的模块中的导入。