Как избежать «Не удалось получить токен доступа: {« error »:« invalid_grant »}» в автономных задачах cron GAE?

Этот пост является продолжениемКак сделать 'access_type = отсутствует» / server-only OAuth2 операции на GAE / Python,http = credentials.authorize(httplib2.Http()) часть больше не дает сбой при тестировании, но, похоже, все еще не работает при запуске GAE 's cron, где это 'Невозможно обновить мои:access_token

Я могу вручную запустить свою работу, позвонив/fetchскажем в 11:45.Планирование немедленно/cronfetch работа в 11:55 работает тогда, без всякихaccess_token вопрос.

Но потом я проснулся сегодня утром, увидев, чтотак же /cronfetch задание (то же самое, за исключением времени, которое в 01:00 для моего не тестового ежедневного задания) не выполнено:

I 2013-06-10 05:53:51.324 make: Got type 
I 2013-06-10 05:53:51.325 validate: Got type 
I 2013-06-10 05:53:51.327 URL being requested: https://www.googleapis.com/youtube/v3/playlists?alt=json&part=snippet%2Cstatus
I 2013-06-10 05:53:51.397 Refreshing due to a 401
I 2013-06-10 05:53:51.420 make: Got type 
I 2013-06-10 05:53:51.421 validate: Got type 
I 2013-06-10 05:53:51.421 Refreshing access_token
I 2013-06-10 05:53:51.458 Failed to retrieve access token: { "error" : "invalid_grant" }
I 2013-06-10 05:53:51.468 make: Got type 
I 2013-06-10 05:53:51.468 validate: Got type 
I 2013-06-10 05:53:51.471 validate: Got type 
I 2013-06-10 05:53:51.471 get: Got type 
E 2013-06-10 05:53:51.480 invalid_grant Traceback (most recent call last): File "/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in

этоПолучение "invalid_grant» ошибка при обновлении токена список рассылки (+ТАК сообщение 1,ТАК пост 2,ТАК пост 3) похоже на мою проблему, но, похоже, это происходит сaccess_type=online маркер. В моем случае я просто использую значение по умолчаниюaccess_type=offlineи я вижуВыполните эти операции, когда яя не использую приложение " упомянуть в первоначальном запросе доступа.

Я только что запланировал запуск cron на 08:25 (стараясь не запускать ручной) с отладочными инструкциями печати, которые я передал вам для GitHub. Вот то, что я получаю, это похоже, но не идентично (Обратите внимание, что несколько последних строк, кажется, упорядочены неправильно, я определенно не делаю вещи OAuth2 вcreate_playlist пока все источники не прочитаны). Таким образом, игнорируя перекос порядка (артефакт записи GAE?), Кажетсямойhttp = credentials.authorize(Http()) вызыватьcreate_playlist(self)В настоящее время на линии 144 неправильно: →

    ...
    E 2013-06-10 08:26:12.817 http://www.onedayonemusic.com/page/2/ : found embeds ['80wWl_s-HuQ', 'kb1Nu75l1vA', 'kb1Nu75l1vA', 'RTWcNRQtkwE', 'RTWcNRQtkwE', 'ZtDXezAhes8', 'ZtDXezAhes8', 'cFGxNJhKK9c', 'cFGxNJhKK9c'
    I 2013-06-10 08:26:14.019 make: Got type 
    I 2013-06-10 08:26:14.020 validate: Got type 
    I 2013-06-10 08:26:14.022 URL being requested: https://www.googleapis.com/youtube/v3/playlists?alt=json&part=snippet%2Cstatus
    I 2013-06-10 08:26:14.100 Refreshing due to a 401
    I 2013-06-10 08:26:14.105 make: Got type 
    I 2013-06-10 08:26:14.106 validate: Got type 
    I 2013-06-10 08:26:14.106 Refreshing access_token
    E 2013-06-10 08:26:18.994 Deadline exceeded while waiting for HTTP response from URL: https://accounts.google.com/o/oauth2/token Traceback (most recent call last): File "/pyt
    E 2013-06-10 08:26:18.996 http://www.onedayonemusic.com/page/3/ : found embeds ['80wWl_s-HuQ', '6VNu2MLdE0c', '6VNu2MLdE0c', 'YwQilKbK9Mk', 'YwQilKbK9Mk', 'KYdB3rectmc', 'KYdB3
    E 2013-06-10 08:26:18.996 crawl_videos end
    E 2013-06-10 08:26:18.996 create_playlist start
    E 2013-06-10 08:26:18.996 create_playlist got creds
    E 2013-06-10 08:26:18.996 create_playlist authorized creds

 Почему задание cron работает через 5 минут после запуска вручную, но не удается через 6 часов? Я думал, что токен обновления никогда не истек. Что я делаю неправильно?

Обратите внимание, что'Моя первая работа в GAE, и вообще моя вторая программа на Python, общий обзор кода и советы очень приветствуются, но, пожалуйста, будьте осторожны :)

Код включенGitHub и мой экземпляр может быть достигнут вdailygrooves.org, Спасибо за вашу помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос