Приложение для загрузки твитов и подписчиков с Google App Engine

Я пытаюсь создать приложение на Python с Google App Engine, которое выбирает подписчиков определенных аккаунтов, а затем их твиты. Я основываюсь на этом шаблоне и изменяю его, чтобы адаптировать его к тому, что мне нужно.

На данный момент проблема в том, что когда я пытаюсь получить подписчиков, я получаю DeadlineExceededError из-за времени ожидания API Twitter.

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

Кто-нибудь знает, как можно добиться того же результата без устаревшего модуля?

2 ответа

Решение

У вас есть пара опций, которые вы можете использовать для длительных задач:

  • Использовать очереди задач GAE: GAE предоставляет очереди push и pull, которые позволяют выполнять асинхронную работу вне отдельного запроса.
  • Использовать Cloud Pub / Sub: тип очереди извлечения, это позволит вашему приложению App Engine публиковать сообщения каждый раз, когда вы захотите получить подписчиков или твиты. Затем подписчик получит сообщение из очереди, выполнит долгосрочное задание, а затем поместит результат в некоторое хранилище данных.
  • Использовать сервисы GAE: это позволит вам создать фоновый сервис и вручную масштабировать его для запуска столько, сколько вам нужно.

Бэкэнды (модули) устарели в пользу Сервисов:

https://cloud.google.com/appengine/docs/flexible/python/an-overview-of-app-engine

Если вы хотите, чтобы служба могла обрабатывать запросы длительностью более 60 секунд, установите для нее значение "Масштабирование вручную". Затем запрос может выполняться до 24 часов (или до тех пор, пока вы его не отключите). Увидеть:

https://cloud.google.com/appengine/docs/standard/python/how-instances-are-managed

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

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