Java 在Google App Engine中,对于包含许多延迟任务的任务队列,最佳存储桶大小是多少?
我的Google App Engine应用程序正在向应用程序添加大量的应用程序。任务计划每x秒运行一次。如果我正确理解bucket size属性b,则高值将阻止延迟任务运行,直到添加了b任务。但是,有一个接近实时的要求,即任务按计划运行。我不希望在达到存储桶大小之前阻止任务。相反,他们应该尽可能地接近预定时间Java 在Google App Engine中,对于包含许多延迟任务的任务队列,最佳存储桶大小是多少?,java,python,google-app-engine,task-queue,deferred-execution,Java,Python,Google App Engine,Task Queue,Deferred Execution,我的Google App Engine应用程序正在向应用程序添加大量的应用程序。任务计划每x秒运行一次。如果我正确理解bucket size属性b,则高值将阻止延迟任务运行,直到添加了b任务。但是,有一个接近实时的要求,即任务按计划运行。我不希望在达到存储桶大小之前阻止任务。相反,他们应该尽可能地接近预定时间 为了支持这个用例,我是否应该使用bucket size为1和rate为500()?还有哪些其他方法支持这一点?谢谢 存储桶大小不会阻止任务单独运行。它扮演着不同的角色 假设您有一个每秒50
为了支持这个用例,我是否应该使用bucket size为1和rate为500()?还有哪些其他方法支持这一点?谢谢 存储桶大小不会阻止任务单独运行。它扮演着不同的角色 假设您有一个每秒500个任务的空队列,并且有几个小时没有添加或启动任务。然后突然,大量的任务同时被添加。您希望立即启动其中多少项任务?将此数字设置为您的桶大小。例如,当bucket大小为1000时,将立即启动1000个任务(然后每秒启动500个任务)
这是怎么回事?bucket每秒会被500个令牌(队列速率)填满,最大值为bucket大小。当有任务可启动时,它们将仅在存储桶不为空时启动,并且在每个任务启动时,将从存储桶中删除一个令牌。您不应使用taskqueues(TQ)对于延迟的任务,使用桶/速率设置将确保高吞吐量的假设,接近实时运行非常重要。在谷歌的小组里有好几个讨论线程,讨论任务开始时间不经常延迟几分钟或更长。存储桶大小和速率不会对这一点产生影响——当高吞吐量TQ空闲时,您的TQ任务将只是坐在那里。到目前为止,我还没有看到谷歌对这种情况的解释。同样,如果您将TQs用于接近实时的任务,那么您必须将任务在开始之前延迟几分钟的罕见时间作为例外情况处理。(事实上,我这样做了,还没有受到负面影响,但您必须有代码来处理结果=延迟的任务)。我最大的希望是,随着新的服务器/应用程序测试的进行,谷歌将找到一种简单的方法,用TQs(祈祷)解决这个难以置信的大问题。你能详细说明一下你将如何“…将代码准备就绪,以处理结果=延迟的任务”?