2015-10-26 75 views
1

我有任务在appengine python中推迟它与所有task_info字符串,字符串列表的简单调用。它适用于任何没有任何任务。Appengine推迟任务的问题,执行引发未知错误

   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 

寻找任何帮助,或其他谁面临同样的问题。

回答

1

PermanentTaskFailure例外indicates表明任务失败,并且永远不会成功。

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

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

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

4

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

如果您将fetch_service方法添加到base/api_fixers.py列表中的_PICKLE_CLASS_WHITELIST列表中,它将起作用。

相关问题