Python 오류 재 시도 방법 총화
Tenacity 는 아파 치 2.0 에서 권한 을 수 여 받 은 유 니 버 설 재 시도 라 이브 러 리 로 Python 으로 작성 되 어 거의 모든 내용 에 재 시도 행 위 를 추가 하 는 작업 을 간소화 합 니 다.그것 은 다시 시도 하 는 가지 에서 기원 되 었 는데,애석 하 게 도 이 가 지 는 더 이상 존재 하지 않 는 다.
Tenacity 를 사용 하면 테스트 사례 의 재 달리기,파충류 스 크 립 트 의 재 달리기,그리고 표를 빼 앗 는 실패 재 강탈 등 을 할 수 있 습 니 다.사용 할 수 있 는 장면 도 많다.
쓰다
우선 Tenacity 설치
pip install Tenacity
무한 재 시도첫 번 째 재 시도 사례 는 줄곧 이상 한 오 류 를 던 졌 기 때문에 무한 재 시도 집행 을 한다.
from tenacity import retry
@retry()
def test_retry():
print(' ')
raise Exception
test_retry()
성공 하면 멈춘다
우리 가 한 번 성공 한 후에 절 차 를 최적화 하면 종료 된다.그렇지 않 으 면 계속 다시 시도 한다.
from tenacity import retry
import random
@retry()
def test_retry():
if random.randint(0,10) > 1:
print(' ')
raise Exception
else:
print(' ')
test_retry()
재 시도 횟수
계속 재 시도 하려 면 많은 자원 을 소모 해 야 하기 때문에 우 리 는 재 시도 횟수 를 설정 할 수 있다.예 를 들 어 몇 번 실패 한 후에 재 시도 하 는 것 을 중단 하고 성공 하 든 안 하 든 간 에.
from tenacity import retry,stop_after_attempt
import random
@retry(stop=stop_after_attempt(7))
def test_retry():
# if random.randint(0,10) > 1:
print(' ')
raise Exception
# else:
# print(' ')
test_retry()
재 시도 시간
실행 시간 을 설정 할 수도 있어 요.
from tenacity import retry,stop_after_attempt,stop_after_delay
import random
from time import sleep
@retry(stop=stop_after_delay(3))
def test_retry():
# if random.randint(0,10) > 1:
sleep(1)
print(' ')
raise Exception
# else:
# print(' ')
test_retry()
조건 부 조합
심지어 여러 조합 조건 을 사용 하여 정지 할 수 있 으 며,어떤 조건 이 먼저 촉발 되면 어느 것 을 집행 할 수 있 습 니까?
from tenacity import retry,stop_after_attempt,stop_after_delay
import random
from time import sleep
@retry(stop=stop_after_delay(3) | stop_after_attempt(2))
def test_retry():
# if random.randint(0,10) > 1:
sleep(1)
print(' ')
raise Exception
# else:
# print(' ')
test_retry()
다시 시도 간격
재 시도 사이 의 간격 이 너무 짧 기 때문에 재 시도 사이 에 2 초 를 기다 리자.
from tenacity import retry,stop_after_attempt,stop_after_delay,wait_fixed
import random
import time
@retry(wait=wait_fixed(2))
def test_retry():
# if random.randint(0,10) > 1:
print(' ')
print(time.ctime())
raise Exception
# else:
# print(' ')
test_retry()
다시 시도 무 작위 간격
우 리 는 대기 시간 범 위 를 설정 할 수 있다.
from tenacity import retry,stop_after_attempt,stop_after_delay,wait_fixed,wait_random
import random
import time
@retry(wait=wait_random(min=1,max=2))
def test_retry():
# if random.randint(0,10) > 1:
print(' ')
print(time.ctime())
raise Exception
# else:
# print(' ')
test_retry()
이전 로그 다시 시도
실행 하기 전에 로 그 를 인쇄 합 니 다.
from tenacity import retry,stop_after_attempt,before_log
import logging
import sys
logging.basicConfig(stream=sys.stderr,level=logging.DEBUG)
logger = logging.getLogger(__name__)
@retry(stop=stop_after_attempt(3),before=before_log(logger,logging.DEBUG))
def test_retry():
print(' ')
raise Exception('Fail')
test_retry()
재 시도 후 로그
같은 것 은 실행 실패 후 로 그 를 인쇄 할 수 있 습 니 다.
from tenacity import retry,stop_after_attempt,after_log
import logging
import sys
logging.basicConfig(stream=sys.stderr,level=logging.DEBUG)
logger = logging.getLogger(__name__)
@retry(stop=stop_after_attempt(3),after=after_log(logger,logging.DEBUG))
def test_retry():
print(' ')
raise Exception('Fail')
test_retry()
기본적으로 자주 사용 하 는 기능 은 이것 입 니 다.깊이 이해 해 야 할 것 이 있 으 면 github 주 소 를 방문 할 수 있 습 니 다https://github.com/jd/tenacity
파 이 썬 오류 재 시도 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 오류 재 시도 방법 에 관 한 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.