requests模块的请求失败自动重试设置和设置等待时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requests模块的请求失败自动重试设置和设置等待时间相关的知识,希望对你有一定的参考价值。

参考技术A 各位看官老爷,要是觉得满意的话就给我点个赞吧,本片文章是本人随手写的笔记,希望对各位能有帮助,文章没有废话,只讲重点:

1.requests的重试:

平时,我们的requests模块有可能会因为各种原因请求失败,比如因网络原因,或者服务器暂时没响应,等等原因,这时,我们应该设置重试次数让程序失败的时候重新请求,具体方法如下

1.导入requests模块 import requests

2.导入from requests.adapters import HTTPAdapter

2调用requests的Session()方法

r = requests.Session()

r.mount('https://',HTTPAdapter(max_retries=3))#里面的max_retries是重试次数

设置好后,我们就可以发起一个自动失败后可以重试的请求了比如get,和post请求请求

r.get(url="http://xxxx")

r.get(url="http://xxx"data=xxx)

可以看出,和平时的requests使用方法无异

2.requests等待时间

requests模块是会默认一个等待时间的,有时候会很长,我们并不希望我们的程序等待响应太长时间那样子程序效率太低了

requests.get('http://xxxx', timeout=0.001)#其中的timeout就是等待的时间,超出这个时间,程序将不再等待。

在 vuejs 中重试失败的 ajax 请求

【中文标题】在 vuejs 中重试失败的 ajax 请求【英文标题】:Retry failed ajax request in vuejs 【发布时间】:2017-05-11 19:13:48 【问题描述】:

在 VueJS 中重试失败的 AJAX 请求的最佳方法是什么?

bulkDecline(requests, decliner) 
  requests = _.map(requests, 'id');
  return Vue.http.post(`$baseUrl/api/decline/$decliner/bulk-decline`, requests)
    .then(
      (response) => 
        Notification(
          title: 'Success!',
          message: response.data.message,
          type: 'success'
        );
        return response;
      , 
      (response) => 
        this.bulkDecline(requests, decliner);
      
    );

但它似乎不起作用。

【问题讨论】:

你可以从here获取灵感。 【参考方案1】:

您是在单个文件组件中执行此操作吗?

如果是这样,您是否尝试过使用

this.$http.post

而不是Vue.http.post?

如果您通过 requests 发送 data: requests 或类似的对象,您也可能会走运。

return this.$http.post(`$baseUrl/api/decline/$decliner/bulk-decline`,  data: requests )

【讨论】:

以上是关于requests模块的请求失败自动重试设置和设置等待时间的主要内容,如果未能解决你的问题,请参考以下文章

在 vuejs 中重试失败的 ajax 请求

编写装饰器实现python请求错误重试功能

GCP PubSub:“请求被中止,因为没有可用的实例。” - 不重试失败

Restkit:重试失败的请求

如何让 Maven 自动重试(从失败的模块恢复)?

如何在 Django-Celery 失败的情况下设置重试任务