Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 为什么队列上的GAE任务的运行频率高于指定的频率?_Google App Engine_Google Cloud Datastore_Task Queue - Fatal编程技术网

Google app engine 为什么队列上的GAE任务的运行频率高于指定的频率?

Google app engine 为什么队列上的GAE任务的运行频率高于指定的频率?,google-app-engine,google-cloud-datastore,task-queue,Google App Engine,Google Cloud Datastore,Task Queue,我的队列定义如下: .... <queue> <name>sendMailsBatch</name> <rate>1/m</rate> <max-concurrent-requests>1</max-concurrent-requests> <retry-parameters> <min-backoff-seconds>70</min-

我的队列定义如下:

....
<queue>
    <name>sendMailsBatch</name>
    <rate>1/m</rate>
    <max-concurrent-requests>1</max-concurrent-requests>
    <retry-parameters>
        <min-backoff-seconds>70</min-backoff-seconds>
        <max-doublings>1</max-doublings>
    </retry-parameters>
</queue>
....
。。。。
发送邮件批处理
1/m
1.
70
1.
....
我希望每次任务运行之间至少有60秒的时间间隔。无论是因为失败而运行的是同一个任务,还是运行的是不同的任务,情况都必须如此

该流程从将一个任务放入队列开始,最后,如果所有数据存储操作都成功,该任务将向队列添加另一个任务(因为它使用任务执行的数据存储操作中的游标)

但当我查看日志时,任务执行得太频繁:

当我配置了一次最多可以运行一个任务,每分钟最多运行一个任务,并且如果一个任务失败,那么两次运行之间应该至少有70秒的间隔,为什么任务执行得如此频繁

谢谢,
-Louise

处理队列时,应用程序引擎使用指定的所有并发请求来处理其bucket中已有的内容。一旦完成这些任务,它将不会执行任何额外的工作,直到新任务出现在bucket上。这些任务添加到bucket的速率由
定义


在本例中,您正确设置了
,但由于您没有显式设置
参数,因此默认设置为5,如下所述:。一旦您将
显式设置为1,您就不会再遇到此问题。

在处理队列时,应用程序引擎使用所有指定的并发请求来处理其bucket中已有的内容。一旦完成这些任务,它将不会执行任何额外的工作,直到新任务出现在bucket上。这些任务添加到bucket的速率由
定义


在本例中,您正确设置了
,但由于您没有显式设置
参数,因此默认设置为5,如下所述:。一旦您将
显式设置为1,您就不会再遇到此问题。

太棒了,它可以工作了!非常感谢你。不过,我认为参数max concurrent requests有很大的误导性。它实际上意味着每个bucket的最大并发请求数?我相信它是特定队列在任何给定时间可以处理的最大请求数。如果您将max concurrent requests设置为2,并且sendMailsBatch bucket中有2个任务,那么应用引擎可能会启动两个处理程序来完成这些任务。太棒了,它可以工作了!非常感谢你。不过,我认为参数max concurrent requests有很大的误导性。它实际上意味着每个bucket的最大并发请求数?我相信它是特定队列在任何给定时间可以处理的最大请求数。如果将max concurrent requests设置为2,并且sendMailsBatch存储桶中有2个任务,那么应用引擎可能会启动两个处理程序来完成这些任务。