Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menjalankan Tugas Latar Belakang dalam Aplikasi FastAPI?
Apabila membina pelayan Python menggunakan FastAPI, mungkin diperlukan untuk memasukkan fungsi yang tidak berkaitan dengan logik API tetapi perlu dijalankan di latar belakang pada asas berulang. Sebagai contoh, ini mungkin melibatkan pemeriksaan API luaran dan mencetak maklumat berdasarkan respons.
Satu pendekatan ialah mencipta urutan yang melaksanakan fungsi yang diingini. Begini cara ini boleh dicapai:
import threading def start_worker(): print('[main]: starting worker...') # Define and execute the worker function worker = my_worker.Worker() worker.working_loop() if __name__ == '__main__': print('[main]: starting...') # Start the worker thread _worker_thread = Thread(target=start_worker, daemon=False) _worker_thread.start()
Kaedah alternatif melibatkan penggunaan penjadual acara untuk tugas latar belakang:
import sched, time from threading import Thread s = sched.scheduler(time.time, time.sleep) def print_event(sc): print("Hello") sc.enter(5, 1, print_event, (sc,)) def start_scheduler(): s.enter(5, 1, print_event, (s,)) s.run() @app.on_event("startup") async def startup_event(): thread = Thread(target=start_scheduler) thread.start()
Jika tugasan ialah fungsi async def, ia boleh ditambahkan pada gelung peristiwa semasa menggunakan fungsi asyncio.create_task():
from fastapi import FastAPI import asyncio async def print_task(s): while True: print('Hello') await asyncio.sleep(s) @asynccontextmanager async def lifespan(app: FastAPI): # Add the async task to the event loop asyncio.create_task(print_task(5)) yield print('Shutting down...') app = FastAPI(lifespan=lifespan)
Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Tugas Latar Belakang dalam Aplikasi FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!