我的任务已添加到“任务队列”,但没有任何自动执行。我需要单击“立即运行”按钮来运行任务,任务执行没有问题。我错过了一些配置吗?
我使用默认队列配置,即带有python 27的标准App Engine。
from google.appengine.api import taskqueue
taskqueue.add(
url='/inserturl',
params={'name': 'tablename'})
答案 0 :(得分:0)
This documentation用于您现在提到的API。想法是相同的:您需要在希望执行任务时指定参数。在这种情况下,您有不同的选项,例如countdown
或eta
。这是用于将任务添加到队列(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
如果立即创建任务并转到控制台,您将看到任务将在指定的秒数内执行并从队列中消失。