Как мне выполнить фоновую работу в стандартной среде Google App Engine на python 3? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть конечная точка в приложении appengine (/start), которую я использую для запуска процесса.В среде Python 2 я использовал deferred для запуска процесса вне контекста запроса.В appengine flex вы можете запускать фоновые потоки , которые находятся вне среды запроса.На первый взгляд, я подумал, что это также верно стандартной среды Python 3, однако при ближайшем рассмотрении он содержит следующее примечание:

Однако обратите внимание, что новые потоки или процессы могутне запускается после обслуживания входящего запроса.

Означает ли это, что после обработки запроса фоновый поток, который я запустил, будет уничтожен?Если да, то как лучше всего начать фоновую работу?

Я мог бы воссоздать библиотеку deferred, создав очередь в облачной задаче и выбрав все, но это последнее средство.

1 Ответ

0 голосов
/ 12 декабря 2018

Из раздела Очередь задач в Понимание различий между Python 2 и Python 3 в стандартной среде App Engine Руководство:

Вы можете использовать Облачные задачи (бета) для доступа к службе очереди задач.

В тех случаях, когда подходят очереди извлечения, такие как постановка в очередь задач или сообщений, которые будут извлекаться и обрабатываться отдельными работниками, Cloud Pub / Sub может быть хорошей альтернативой.Cloud Pub / Sub предлагает аналогичные функции и гарантии доставки.

Так что да, облачные задачи - это рекомендуемое решение.

Но на самом деле вам не нужно заново создавать библиотеку deferred - она ​​была создана поверх очередей push-задач.Единственное преимущество библиотеки deferred перед задачами push было то, что вам не нужно было предварительно регистрировать обработчики для задач (вы просто передавали выполняемую функцию и ее аргументы).Но это не относится к облачным задачам - они требуют обработчиков GAE .

...