Google App Engine, задачи в очереди задач не выполняются автоматически - PullRequest
0 голосов
/ 12 февраля 2019

Мои задачи добавляются в очередь задач, но автоматически ничего не выполняется.Мне нужно нажать кнопку «Запустить сейчас», чтобы запустить задачи, задачи выполняются без проблем.Я пропустил некоторые конфигурации?

Я использую конфигурацию очереди по умолчанию, стандартный App Engine с python 27.

from google.appengine.api import taskqueue

taskqueue.add(
        url='/inserturl',
        params={'name': 'tablename'})

1 Ответ

0 голосов
/ 12 февраля 2019

Эта документация предназначена для API, который вы сейчас упоминаете.Идея будет та же: вам нужно указать параметр, когда вы хотите, чтобы задача была выполнена.В этом случае у вас есть разные варианты, такие как countdown или eta.Вот специальная документация для метода, который вы используете для добавления задачи в очередь (taskqueue.add)

ОРИГИНАЛЬНЫЙ ОТВЕТ

Есливы следуете этому руководству для создания очередей и задач , вы увидите, что оно основано на следующем github repo .Если вы идете в файл, где создаются задачи (create_app_engine_queue_task.py).Здесь вы должны указать время, когда задача должна быть выполнена.В этом уроке, чтобы наконец создать задачу, они используют следующую команду:

python create_app_engine_queue_task.py --project=$PROJECT_ID --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello

Тем не менее, вам не хватает времени, когда вы хотите ее выполнить, она должна выглядеть следующим образом

python create_app_engine_queue_task.py --project=$PROJECT_ID --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello --in_seconds=["countdown" for when the task will be executed, in seconds]

По сути, ключ находится в этой части кода в create_app_engine_queue_task.py:

if in_seconds is not None:
    # Convert "seconds from now" into an rfc3339 datetime string.
    d = datetime.datetime.utcnow() + datetime.timedelta(seconds=in_seconds)

    # Create Timestamp protobuf.
    timestamp = timestamp_pb2.Timestamp()
    timestamp.FromDatetime(d)

    # Add the timestamp to the tasks.
    task['schedule_time'] = timestamp

Если вы создадите задачу сейчас и перейдете на консоль, вы увидите, что ваша задача будет выполнена и исчезнетиз очереди за указанное вами количество секунд.

...