appengine延迟任务的问题,执行抛出未知错误



我有任务延迟在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

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

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

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

PermanentTaskFailure异常表示任务失败,并且永远不会成功。

这通常意味着当GAE基础架构尝试调度任务时遇到一些无效条件。

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

这可能表明任务在一个没有访问fetch_service对象的模块中执行。我会检查显示错误的模块中的导入。

最新更新