Google App Engine,任务队列中的任务不会自动执行

时间:2019-02-12 09:24:38

标签: python-2.7 google-app-engine task-queue

我的任务已添加到“任务队列”,但没有任何自动执行。我需要单击“立即运行”按钮来运行任务,任务执行没有问题。我错过了一些配置吗?

我使用默认队列配置,即带有python 27的标准App Engine。

from google.appengine.api import taskqueue

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

1 个答案:

答案 0 :(得分:0)

This documentation用于您现在提到的API。想法是相同的:您需要在希望执行任务时指定参数。在这种情况下,您有不同的选项,例如countdowneta。这是用于将任务添加到队列(taskqueue.add)的方法的specific documentation

原始答案

如果您遵循此tutorial to create queues and tasks,将会看到它基于以下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

如果立即创建任务并转到控制台,您将看到任务将在指定的秒数内执行并从队列中消失。