Rumah >pembangunan bahagian belakang >Tutorial Python >Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI

Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI

WBOY
WBOYasal
2023-07-30 15:53:123587semak imbas

Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI

Pengenalan:
FastAPI ialah rangka kerja Python moden dan berprestasi tinggi yang memfokuskan pada membina aplikasi API. Walau bagaimanapun, kadangkala kita perlu melaksanakan tugas berjadual dan tugas berkala dalam aplikasi FastAPI. Artikel ini menerangkan cara melaksanakan tugas ini dalam aplikasi FastAPI dan menyediakan contoh kod yang sepadan.

1. Pelaksanaan tugas berjadual

  1. Menggunakan perpustakaan APScheduler
    APScheduler ialah perpustakaan Python yang berkuasa untuk menjadualkan dan mengurus tugas berjadual. Ia menyokong berbilang penjadual tugas, seperti berdasarkan tarikh, selang masa dan ungkapan Cron. Berikut ialah langkah untuk menggunakan APScheduler untuk melaksanakan tugas berjadual dalam FastAPI:

    1. Pasang pustaka APScheduler: Jalankan arahan pip install apscheduler dalam terminal untuk memasang pustaka 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. Buat modul tugas berjadual: Dalam direktori akar aplikasi FastAPI, buat fail bernama tasks.py untuk mentakrifkan tugas berjadual.
    from celery import Celery
    
    app = Celery('tasks', broker='redis://localhost:6379')
    
    @app.task
    def job():
        print("This is a scheduled job")
  1. Daftar modul tugas berjadual: Dalam fail utama aplikasi FastAPI, import modul tugas berjadual dan daftarkannya sebagai sub-aplikasi aplikasi FastAPI.

from fastapi import FastAPI
from .tasks import app as celery_app

app = FastAPI()

app.mount("/tasks", celery_app)

  1. Menggunakan perpustakaan Saderi

    Saderi ialah perpustakaan baris gilir tugas teragih yang berkuasa yang menyokong tugas tak segerak dan berjadual. Berikut ialah langkah untuk menggunakan Celery untuk melaksanakan tugas berjadual dalam FastAPI:

      Pasang perpustakaan Celery: Jalankan arahan pip install celery dalam terminal untuk memasang pustaka Celery.
    1. Buat modul tugas berjadual: Dalam direktori akar aplikasi FastAPI, buat fail bernama tasks.py untuk mentakrifkan tugas berjadual.
  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()
    Daftar modul tugas berjadual: Dalam fail utama aplikasi FastAPI, import modul tugas berjadual dan daftarkannya sebagai sub-aplikasi aplikasi 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. Pelaksanaan tugasan berkala

    1. Gunakan perpustakaan APScheduler
    2. APScheduler library juga menyokong penjadualan tugasan berkala. Berikut ialah langkah untuk menggunakan APScheduler untuk melaksanakan tugas berkala dalam aplikasi FastAPI:
  2. Pasang perpustakaan APScheduler: Rujuk langkah 1 dalam artikel sebelumnya.

Buat modul tugasan berkala: rujuk langkah 2 dalam artikel sebelumnya.

rrreee
  • Menggunakan perpustakaan Saderi
  • Perpustakaan Saderi juga menyokong penjadualan tugasan berkala. Berikut ialah langkah untuk melaksanakan tugas berkala menggunakan Celery dalam aplikasi FastAPI:

Pasang perpustakaan Saderi: Rujuk langkah 1 dalam artikel sebelumnya.

🎜Buat modul tugasan berkala: rujuk langkah 2 dalam artikel sebelumnya. 🎜🎜🎜🎜rrreee🎜Kesimpulan: 🎜Dengan menggunakan perpustakaan APScheduler atau Celery, kami boleh melaksanakan tugas berjadual dan tugas berkala dengan mudah dalam aplikasi FastAPI. Contoh kod yang disediakan di atas boleh digunakan sebagai rujukan untuk membantu anda melaksanakan fungsi tugas ini dengan cepat dalam projek FastAPI anda. Walaupun perkara di atas adalah contoh mudah, anda boleh melanjutkan dan menyesuaikan logik tugas anda sendiri berdasarkan contoh ini. 🎜🎜Bahan rujukan: 🎜🎜🎜Dokumentasi rasmi APSscheduler: https://apscheduler.readthedocs.io/🎜🎜Dokumentasi rasmi Celery: https://docs.celeryproject.org/🎜🎜🎜 (Artikel ini untuk rujukan sahaja rujuk situasi sebenar Laraskan dan ubah suai sewajarnya jika perlu)🎜.

Atas ialah kandungan terperinci Cara melaksanakan tugas berjadual dan tugas berkala dalam FastAPI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn