Проблема с отложенными задачами appengine, выполнение выдает неизвестную ошибку

Я отложил задачу в appengine python - это простой вызов со всеми строками task_info, списком строк. Это хорошо работает для любого из задач.

               deferred.defer(fetch_service, 
                              _queue = "queue_name",
                              _countdown = task_counter * 4,
                              **task_info  )

Я наблюдал странное поведение, когда я получаю доступ к некоторым конечным точкам или пользовательскому интерфейсу в другом URL или в разных модулях, эти отложенные вызовы начинают давать сбой. Каждый разный вызов вызывает одну и ту же проблему.

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 ответа

Эта проблема специфична для скаффолдов GAE python, предоставленных Google. Есть белый список методов, которые разрешены для маринования.

Если вы добавите свой fetch_service метод к _PICKLE_CLASS_WHITELIST в base/api_fixers.py список, это будет работать.

PermanentTaskFailure исключение означает, что задача не выполнена и никогда не будет выполнена.

Как правило, это означает, что возникает недопустимое условие, когда инфраструктура GAE пытается запланировать задачу.

None.fetch_service Строка в сообщении об ошибке указывает на недопустимую ссылку: None не имеет fetch_service приписывать.

Это может указывать на попытку выполнения задачи в модуле, который не имеет доступа к fetch_service объект. Я бы проверил импорт в модуле, отображающем ошибку.

Другие вопросы по тегам