brunch

매거진 백엔드

You can make anything
by writing

C.S.Lewis

by 내가 사는 세상 Nov 17. 2023

Celery

해야할 일이 적혀있는 메시지를 분산하여 비동기로 작업 처리




기본사용법

# tasks.py

from celery import shared_task

import requests


@shared_task

def fetch_data(url):

    try:

        response = requests.get(url)

        # HTTP 응답 코드가 200인 경우에만 데이터를 반환합니다.

        if response.status_code == 200:

            return response.text

        else:

            print(f"Failed to fetch data. Status code: {response.status_code}")

            return None

    except requests.RequestException as e:

        print(f"An error occurred: {e}")

        return None



# views.py

from .tasks import fetch_data


url = "https://www.example.com"  # 데이터를 가져올 웹 페이지의 URL

result = fetch_data.delay(url)

# result = fetch_data.apply_async(args=[url])


if result.successful():  # Celery 작업의 결과를 확인하고 처리

    data = result.get()

    print("Fetched data successfully:")

    print(data)

else:

    print("Failed to fetch data.")




Task Routing(Queue)



Task Prioritization



Task Grouping #signature




Task Chaining



Task Rate Limits



Chord

매거진의 이전글 Redis
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari