亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決python超時重新請求問題

發布時間:2021-08-04 10:30:12 來源:億速云 閱讀:139 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何解決python超時重新請求問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決python超時重新請求問題”這篇文章吧。

在應用中,有時候會 依賴第三方模塊執行方法,比如調用某模塊的上傳下載,數據庫查詢等操作的時候,如果出現網絡問題或其他問題,可能有超時重新請求的情況;

目前的解決方案有

1. 信號量,但不支持window;

2.多線程,但是 如果是大量的數據重復操作嘗試,會出現線程管理混亂,開啟上萬個線程的問題;

3.結合采用 eventlet 和 retrying模塊 (eventlet 原理尚需深入研究)

下面的方法實現:超過指定時間重新嘗試某個方法

# -*- coding: utf-8 -*-
import random
import time
 
import eventlet
from retrying import retry
 
eventlet.monkey_patch()
 
 
class RetryTimeOutException(Exception):
  def __init__(self, *args, **kwargs):
    pass
 
 
def retry_if_timeout(exception):
  """Return True if we should retry (in this case when it's an IOError), False otherwise"""
  return isinstance(exception, RetryTimeOutException)
 
 
def retry_fun(retries=3, timeout_second=2):
  """
  will retry ${retries} times when process time beyond ${timeout_second} ;
  :param retries: The retry times
  :param timeout_second: The max process time
  """
 
  def retry_decor(func):
    @retry(stop_max_attempt_number=retries, retry_on_exception=retry_if_timeout)
    def decor(*args, **kwargs):
      print("In retry method..")
      pass_flag = False
      with eventlet.Timeout(timeout_second, False):
        r = func(*args, **kwargs)
        pass_flag = True
        print("Success after method.")
      if not pass_flag:
        raise RetryTimeOutException("Time out..")
      print("Exit from retry.")
      return r
 
    return decor
 
  return retry_decor
 
 
def do_request():
  print("begin request...")
  sleep_time = random.randint(1, 4)
  print("request sleep time: %s." % sleep_time)
  time.sleep(sleep_time)
  print("end request...")
  return True
 
 
@retry_fun(retries=3)
def retry_request():
  r = do_request()
  print(r)
 
 
if __name__ == '__main__':
  retry_request()

以上是“如何解決python超時重新請求問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沂水县| 调兵山市| 即墨市| 简阳市| 内乡县| 佛教| 乡宁县| 金寨县| 虞城县| 十堰市| 盐亭县| 江山市| 阿瓦提县| 河南省| 房山区| 南漳县| 城市| 武鸣县| 青阳县| 保靖县| 盐津县| 治多县| 庐江县| 青岛市| 天门市| 石门县| 大英县| 河源市| 贺州市| 潼南县| 犍为县| 林州市| 庆元县| 布尔津县| 定日县| 沙田区| 陇川县| 剑河县| 太和县| 房产| 凤台县|