Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang

Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang

WBOY
WBOYasal
2023-07-28 14:22:522942semak imbas

Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang

Dengan perkembangan pesat aplikasi Internet, banyak aplikasi mempunyai beberapa tugas latar belakang yang perlu dilaksanakan dengan kerap, seperti pembersihan data, penghantaran e-mel, sandaran, dsb. Untuk menyelesaikan masalah ini, kami boleh menggunakan tugas berjadual untuk melaksanakan kerja latar belakang secara automatik. Dalam artikel ini, kami akan memperkenalkan cara menggunakan tugas berjadual dalam rangka kerja FastAPI untuk melaksanakan kerja latar belakang.

FastAPI ialah rangka kerja web moden, pantas (berprestasi tinggi) yang digunakan terutamanya untuk membina API. Kemudahan penggunaan dan kecekapannya menjadikannya ideal untuk membina aplikasi yang melaksanakan tugas sebagai pekerja latar belakang.

Pertama, kita perlu memasang perpustakaan yang diperlukan. Jalankan arahan berikut dalam terminal untuk memasang FastAPI dan perpustakaan lain yang berkaitan:

$ pip install fastapi
$ pip install uvicorn
$ pip install apscheduler

Sebelum mula menulis kod, kita perlu terlebih dahulu memahami perpustakaan APScheduler, iaitu perpustakaan tugas berjadual yang mudah dan berkuasa untuk Python. Pustaka ini boleh mengendalikan pelbagai jenis keperluan tugas berjadual, seperti tugas pelaksanaan selang waktu, tugas pelaksanaan masa tertentu, tugas pencetus berjadual, dsb.

Seterusnya, kita boleh mula menulis kod.

Pertama, kita perlu mengimport modul yang diperlukan:

from fastapi import FastAPI
from apscheduler.schedulers.background import BackgroundScheduler

Kemudian, cipta objek aplikasi FastAPI:

app = FastAPI()

Seterusnya, buat objek pelaksana tugas latar belakang:

scheduler = BackgroundScheduler()

Kemudian, tentukan fungsi tugas latar belakang:

Nexreeet , kita perlu menentukan antara muka API untuk memulakan tugas yang dijadualkan:

def background_task():
    # 这里可以编写你的后台任务逻辑
    # 例如数据清理、邮件发送、备份等
    pass

Akhir sekali, kita perlu menentukan antara muka API untuk menghentikan tugasan yang dijadualkan:

@app.post("/start_task")
async def start_task():
    # 添加定时任务
    scheduler.add_job(background_task, 'interval', minutes=30)
    # 启动任务调度器
    scheduler.start()
    return {"message": "后台任务已启动"}

Kini, kami telah menulis latar belakang untuk menggunakan pelaksanaan tugas berjadual Working FastAPI permohonan. Kita boleh menggunakan arahan berikut untuk memulakan aplikasi:

@app.post("/stop_task")
async def stop_task():
    # 关闭任务调度器
    scheduler.shutdown()
    return {"message": "后台任务已停止"}

Kemudian, kita boleh menggunakan alatan seperti Posmen atau pelayar untuk mengakses antara muka untuk memulakan dan menghentikan tugas yang dijadualkan.

Dengan mengakses antara muka http://localhost:8000/start_task, kami boleh memulakan tugas yang dijadualkan. Tugasan yang dijadualkan akan melaksanakan tugas latar belakang setiap 30 minit.

http://localhost:8000/start_task接口,我们可以启动定时任务。定时任务将会每隔30分钟执行一次后台任务。

通过访问http://localhost:8000/stop_taskDengan mengakses antara muka http://localhost:8000/stop_task, kami boleh menghentikan tugasan yang dijadualkan.

Untuk meringkaskan, artikel ini memperkenalkan cara menggunakan tugas berjadual dalam rangka kerja FastAPI untuk melaksanakan kerja latar belakang. Dengan menggunakan perpustakaan APScheduler, kami boleh melaksanakan perlaksanaan automatik tugasan berjadual dengan mudah. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Cara menggunakan tugas berjadual dalam FastAPI untuk melaksanakan kerja latar belakang. 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