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

2023. 10. 24. 21:52·Python

개요

작업 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를 통한 비동기 처리를 적절히 구현하여 프로세스를 안전하고 효율적으로 수행할 수 있도록 해야 합니다.

'Python' 카테고리의 다른 글
  • 파이썬의 Linter이자 Formatter, Ruff 사용해보기
  • 파이썬에서 Redis 사용하기
  • 행정동 지리정보 불러와서 시각화하기 (geopandas, keplergl)
  • Black와 Isort를 위한 VSCode settings.json
ssuwani
ssuwani
  • ssuwani
    완두콩
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바