Возможно, вы захотите использовать очередь задач обработчика приложений, которая является планировщиком заданий для постановки в очередь ожидающих задач для другого обработчика приложений, так как обработчик приложений является однопоточным обработчиком.
Например,
1. Настройка новой службы для обработки задачи (ДОПОЛНИТЕЛЬНО)
Установите вызов yaml newtaskworker.yaml
, который похож на ваш app.yaml
, так как вы можете захотеть, чтобы другая служба выполняла задачу, а не оригинальную.
Единственное отличие - не забывайте добавлять для него имя службы, service: newtaskworker
Не забудьте развернуть его по gcloud app deploy newtaskworker.yaml
2. Установить очередь
Чтение Как создать новую очередь , вообще говоря, вам нужно queue.yaml
для постановки в очередь задач. Не забудьте развернуть его по gcloud app deploy queue.yaml
queue:
- name: queue_name
rate: 20/s #You may limit the speed of *START* new task here
bucket_size: 40
max_concurrent_requests: 10 #This is limited by your max_instances allowed in newtaskworker.yaml, you may simply omit it
3. Наконец твой код
from google.appengine.api import taskqueue
#/deleteTask
class DeleteTask(webapp2.RequestHandler):
def get(self):
paramA = self.request.get('paramA')
paramB = self.request.get('paramB')
#your Search delete here
class GetPostDataTask(webapp2.RequestHandler):
def get(self):
#If you don't want to use a new service, simply use 'default` in target.
#Your Go to Pub/Sub work here.
taskqueue.add(queue_name='queue_name', url='/deleteTask', method='GET', params={'paramA': 1, 'paramB': 2}, target='newtaskworker')
Если все в порядке, вы можете найти свою задачу в Консоли -> Инструменты -> Облачная задача