Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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
Python 为使用GAE延迟库排队的任务指定重试限制_Python_Google App Engine_Task Queue - Fatal编程技术网

Python 为使用GAE延迟库排队的任务指定重试限制

Python 为使用GAE延迟库排队的任务指定重试限制,python,google-app-engine,task-queue,Python,Google App Engine,Task Queue,我们正在使用GAE卸载某些耗时的任务,希望知道如何为这些卸载的任务设置重试限制。我们遇到的问题是,某些任务将永远重试,因为由于某些不可恢复的异常,该任务将永远不会成功。根据 根据 检查任务中的X-Appengine-Taskretrycount和X-Appengine-Taskexecutioncounthttp头值 如果不想重试任务,可以引发延迟.PermanentTaskFailure异常。此异常将仅被记录,任务将不会再次运行 访问http头的不同方式: 对于taskqueue触发的http

我们正在使用GAE卸载某些耗时的任务,希望知道如何为这些卸载的任务设置重试限制。我们遇到的问题是,某些任务将永远重试,因为由于某些不可恢复的异常,该任务将永远不会成功。

根据

根据


检查任务中的X-Appengine-TaskretrycountX-Appengine-Taskexecutioncounthttp头值

如果不想重试任务,可以引发延迟.PermanentTaskFailure异常。此异常将仅被记录,任务将不会再次运行

访问http头的不同方式:

对于taskqueue触发的http处理程序: num_trytes=self.request.headers.get('X-AppEngine-TaskRetryCount')

对于延迟库触发的函数:
num_trys=webapp2.get_request().headers.get('X-AppEngine-taskretycount')

检查任务中的X-AppEngine-taskretycountX-AppEngine-Taskexecutioncounthttp头值

如果不想重试任务,可以引发延迟.PermanentTaskFailure异常。此异常将仅被记录,任务将不会再次运行

访问http头的不同方式:

对于taskqueue触发的http处理程序: num_trytes=self.request.headers.get('X-AppEngine-TaskRetryCount')

对于延迟库触发的函数: num_trys=webapp2.get_request().headers.get('X-AppEngine-TaskRetryCount')

根据
延迟的
\u retry\u选项
。延迟
API可用于将重试选项传递给关联的
任务()
实例:

_倒计时、\u eta、\u头、\u名称、\u目标、\u事务性、\u url、\u重试\u选项、\u队列:传递到任务队列-有关详细信息,请参阅任务队列文档

发件人:

您还可以使用
任务_重试_限制
属性:

任务\u重试\u限制

失败任务的最大重试次数

在推送队列中,每次应用引擎尝试任务时,计数器都会递增,直至达到指定的任务重试限制。如果指定了task_age_limit,App Engine将重试该任务,直到达到这两个限制

在请求队列中,每次租用任务时计数器都会递增,直至达到指定的任务重试限制。一旦任务按限制中指定的次数租用,任务将自动删除

注意:答案仅基于文档,我没有实际实现它,YMMV。

根据
延迟的
\u retry\u选项
。延迟
API可用于将重试选项传递给相关的
任务()
实例:

_倒计时、\u eta、\u头、\u名称、\u目标、\u事务性、\u url、\u重试\u选项、\u队列:传递到任务队列-有关详细信息,请参阅任务队列文档

发件人:

您还可以使用
任务_重试_限制
属性:

任务\u重试\u限制

失败任务的最大重试次数

在推送队列中,每次应用引擎尝试任务时,计数器都会递增,直至达到指定的任务重试限制。如果指定了task_age_limit,App Engine将重试该任务,直到达到这两个限制

在请求队列中,每次租用任务时计数器都会递增,直至达到指定的任务重试限制。一旦任务按限制中指定的次数租用,任务将自动删除


注意:答案仅基于文档,我没有实际实现它,YMMV。

您提供的链接可能存在重复,讨论了通过抛出异常来控制应用程序重试。我想知道是否有可能在发布作业时指定重试次数,延迟库负责强制执行。您提供的链接的可能重复说明了如何通过引发异常来控制应用程序的重试。我想知道在发布作业时是否可以指定重试次数,延迟库负责执行。非常感谢您的回复。在浏览了延迟库代码之后,我发现可以通过_retry _选项来获取我想要的内容。我也试过了,效果不错。非常感谢你的回复,丹。在浏览了延迟库代码之后,我发现可以通过_retry _选项来获取我想要的内容。我也试过了,效果很好。
queue:
- name: fooqueue
  rate: 1/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
- name: barqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 0
- name: bazqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 3