>  기사  >  백엔드 개발  >  FastAPI에서 예약된 작업과 정기 작업을 구현하는 방법

FastAPI에서 예약된 작업과 정기 작업을 구현하는 방법

WBOY
WBOY원래의
2023-07-30 15:53:123447검색

FastAPI에서 예약된 작업과 정기적인 작업을 구현하는 방법

소개:
FastAPI는 API 애플리케이션 구축에 초점을 맞춘 현대적이고 고성능 Python 프레임워크입니다. 그러나 때로는 FastAPI 애플리케이션에서 예약된 작업과 정기적인 작업을 수행해야 하는 경우도 있습니다. 이 문서에서는 FastAPI 애플리케이션에서 이러한 작업을 구현하는 방법을 설명하고 해당 코드 예제를 제공합니다.

1. 예약된 작업 구현

  1. APScheduler 라이브러리 사용
    APScheduler는 예약된 작업을 예약하고 관리하는 강력한 Python 라이브러리입니다. 날짜, 시간 간격 및 Cron 표현식을 기반으로 하는 여러 작업 스케줄러를 지원합니다. 다음은 APScheduler를 사용하여 FastAPI에서 예약된 작업을 구현하는 단계입니다.

    1. APScheduler 라이브러리 설치: 터미널에서 pip install apscheduler 명령을 실행하여 APScheduler 라이브러리를 설치합니다. pip install apscheduler来安装APScheduler库。
    2. 创建一个定时任务模块:在FastAPI应用程序的根目录下,创建一个名为tasks.py的文件,用于定义定时任务。
from apscheduler.schedulers.background import BackgroundScheduler

scheduler = BackgroundScheduler()

@scheduler.scheduled_job('interval', seconds=10)
def job():
    print("This is a scheduled job")

scheduler.start()
  1. 注册定时任务模块:在FastAPI应用程序的主文件中,导入定时任务模块并注册为FastAPI应用程序的一个子应用。
from fastapi import FastAPI
from .tasks import scheduler

app = FastAPI()

app.mount("/tasks", scheduler.app)
  1. 使用Celery库
    Celery是一个强大的分布式任务队列库,支持异步和定时任务。以下是在FastAPI中使用Celery实现定时任务的步骤:

    1. 安装Celery库:在终端中运行命令pip install celery来安装Celery库。
    2. 创建一个定时任务模块:在FastAPI应用程序的根目录下,创建一个名为tasks.py
    3. 예약된 작업 모듈 생성: FastAPI 애플리케이션의 루트 디렉터리에 tasks.py라는 파일을 생성하여 예약된 작업을 정의합니다.
    from celery import Celery
    
    app = Celery('tasks', broker='redis://localhost:6379')
    
    @app.task
    def job():
        print("This is a scheduled job")
  1. 예약된 작업 모듈 등록: FastAPI 애플리케이션의 기본 파일에서 예약된 작업 모듈을 가져와 FastAPI 애플리케이션의 하위 애플리케이션으로 등록합니다.

from fastapi import FastAPI
from .tasks import app as celery_app

app = FastAPI()

app.mount("/tasks", celery_app)

  1. Celery 라이브러리 사용

    Celery는 비동기식 및 예약된 작업을 지원하는 강력한 분산 작업 대기열 라이브러리입니다. 다음은 Celery를 사용하여 FastAPI에서 예약된 작업을 구현하는 단계입니다.

      Celery 라이브러리 설치: 터미널에서 pip install celery 명령을 실행하여 Celery 라이브러리를 설치합니다.
    1. 예약된 작업 모듈 생성: FastAPI 애플리케이션의 루트 디렉터리에 tasks.py라는 파일을 생성하여 예약된 작업을 정의합니다.
  2. from apscheduler.triggers.cron import CronTrigger
    
    scheduler = BackgroundScheduler()
    
    @scheduler.scheduled_job(CronTrigger.from_crontab('* * * * *'))
    def job():
        print("This is a periodic job")
    
    scheduler.start()
    예약된 작업 모듈 등록: FastAPI 애플리케이션의 기본 파일에서 예약된 작업 모듈을 가져와 FastAPI 애플리케이션의 하위 애플리케이션으로 등록합니다.
  1. from celery import Celery
    from celery.schedules import crontab
    
    app = Celery('tasks', broker='redis://localhost:6379')
    
    @app.task
    def job():
        print("This is a periodic job")
    
    app.conf.beat_schedule = {
        'job': {
            'task': 'tasks.job',
            'schedule': crontab(minute='*'),
        },
    }

    2. 정기 작업 구현

    1. APScheduler 라이브러리 사용
    2. APScheduler 라이브러리는 정기 작업 예약도 지원합니다. 다음은 APScheduler를 사용하여 FastAPI 애플리케이션에서 정기적인 작업을 구현하는 단계입니다.
  2. APScheduler 라이브러리 설치: 이전 문서의 1단계를 참조하세요.

주기적인 작업 모듈 만들기: 이전 문서의 2단계를 참조하세요.

rrreee
  • 셀러리 라이브러리 사용
  • 셀러리 라이브러리는 정기적인 작업 예약도 지원합니다. 다음은 FastAPI 애플리케이션에서 Celery를 사용하여 주기적 작업을 구현하는 단계입니다.

Celery 라이브러리 설치: 이전 기사의 1단계를 참조하세요.

🎜주기적인 작업 모듈 만들기: 이전 문서의 2단계를 참조하세요. 🎜🎜🎜🎜rrreee🎜결론: 🎜APScheduler 또는 Celery 라이브러리를 사용하면 FastAPI 애플리케이션에서 예약된 작업과 주기적 작업을 쉽게 구현할 수 있습니다. 위에 제공된 코드 예제는 FastAPI 프로젝트에서 이러한 작업 기능을 빠르게 구현하는 데 도움이 되는 참조로 사용될 수 있습니다. 위의 내용은 간단한 예이지만 이러한 예를 기반으로 자신만의 작업 논리를 추가로 확장하고 사용자 정의할 수 있습니다. 🎜🎜참고 자료: 🎜🎜🎜APScheduler 공식 문서: https://apscheduler.readthedocs.io/🎜🎜Celery 공식 문서: https://docs.celeryproject.org/🎜🎜🎜 (이 기사는 참고용입니다. 실제 상황에 기초하여 필요한 경우 그에 따라 조정하고 수정하세요)🎜.

위 내용은 FastAPI에서 예약된 작업과 정기 작업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.