A 작업은 실패하더라도 B는 성공했으면 좋겠어

2023. 10. 24. 21:52·Python
목차
  1. 개요
  2. 1. 왜 독립적인 처리가 필요한가?
  3. 2. 처리 방법
  4. 2.1. 예외 처리를 통한 처리
  5. 2.2. asyncio.gather를 통한 처리

개요

작업 A와 작업 B가 서로 독립적으로 실행되어야 하는 상황이 종종 있습니다. 작업 A의 실패 여부가 작업 B에 영향을 미치지 않고 작업 B가 성공적으로 수행되어야 하는 경우가 그중 하나입니다. 이러한 상황에서는 작업 A와 작업 B를 어떻게 처리해야 하는지 살펴보겠습니다.

1. 왜 독립적인 처리가 필요한가?

작업 A와 작업 B는 상호 독립적으로 실행되어야 합니다. 즉, 작업 A의 실패 여부가 작업 B에 아무 영향을 미치지 않아야 합니다. 따라서 작업 A의 결과가 작업 B에 영향을 미치지 않는 한, 작업 B는 성공적으로 실행되어야 합니다.

2. 처리 방법

작업 A와 작업 B를 독립적으로 처리하는 방법에 대해 알아보겠습니다.

2.1. 예외 처리를 통한 처리

만약 작업 A의 결과를 작업 B에서 사용해야 하는 경우, 예외 처리를 통해 작업 A의 실패 여부를 확인하고 작업 B를 수행할 수 있습니다. 아래는 이에 대한 예시 코드입니다.

try:
result = task_a()
except Exception as ex:
logger.error(f"작업 A 에러: {ex}")
try:
task_b(result)
except Exception as ex:
logger.error(f"작업 B 에러: {ex}")

이 방법을 사용하면 작업 A가 실패해도 작업 B를 처리할 수 있으며, 작업 A의 결과를 작업 B에서 사용할 수 있습니다.

2.2. asyncio.gather를 통한 처리

작업 A와 작업 B가 완전히 독립적으로 실행 가능한 경우, asyncio.gather를 사용하여 병렬적으로 작업을 처리할 수 있습니다. 아래는 이에 대한 예시 코드입니다.

import asyncio
async def main():
await asyncio.gather(
task_a(),
task_b()
)
asyncio.run(main())

작업 A와 작업 B가 비동기적으로 실행되므로 I/O 중심 작업의 경우 실행 시간을 단축할 수 있습니다. 여러 작업이 하나의 프로세스에서 동시에 실행되어야 할 때는 작업 간의 의존성을 고려하고 예외 처리 및 asyncio.gather를 통한 비동기 처리를 적절히 구현하여 프로세스를 안전하고 효율적으로 수행할 수 있도록 해야 합니다.

  1. 개요
  2. 1. 왜 독립적인 처리가 필요한가?
  3. 2. 처리 방법
  4. 2.1. 예외 처리를 통한 처리
  5. 2.2. asyncio.gather를 통한 처리
'Python' 카테고리의 다른 글
  • 파이썬의 Linter이자 Formatter, Ruff 사용해보기
  • 파이썬에서 Redis 사용하기
  • 행정동 지리정보 불러와서 시각화하기 (geopandas, keplergl)
  • Black와 Isort를 위한 VSCode settings.json
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    datadrift
    MLOps
    consumer
    producer
    BentoML
    mlflow
    fluentbit
    Kubernetes
    Github Actions
    Schema Registry
    FastAPI
    LLM
    gcp
    Spark
    asyncronous
    Kafka
    auto tagging
    Python
    topic
    evidently ai
    Kubeflow
    Airflow
    Docker
    태그1
    RDD
    Prometheus
    Confluent Cloud
    태그2
    LangChain
    redis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
A 작업은 실패하더라도 B는 성공했으면 좋겠어

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.