Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pengelogan dan pemantauan permintaan dalam FastAPI

Bagaimana untuk melaksanakan pengelogan dan pemantauan permintaan dalam FastAPI

WBOY
WBOYasal
2023-07-30 08:29:393832semak imbas

Cara melaksanakan pengelogan dan pemantauan permintaan dalam FastAPI

Pengenalan:
FastAPI ialah rangka kerja web berprestasi tinggi berdasarkan Python 3.7+, yang menyediakan banyak fungsi dan ciri yang berkuasa, termasuk pengesahan model permintaan dan tindak balas automatik, keselamatan, pengoptimuman prestasi, dll. Dalam pembangunan sebenar, kita sering perlu merekodkan log permintaan dalam aplikasi untuk analisis penyahpepijatan dan pemantauan. Artikel ini akan memperkenalkan cara melaksanakan pengelogan dan pemantauan permintaan dalam FastAPI dan menyediakan contoh kod yang sepadan.

1. Pasang pakej pergantungan
Sebelum kita mula, kita perlu memasang beberapa pakej pergantungan yang diperlukan. Buka terminal dan laksanakan arahan berikut:

pip install fastapi uvicorn loguru

Antaranya, loguru ialah perpustakaan pembalakan yang mudah digunakan, kami akan menggunakannya untuk merekodkan log permintaan.

2 Cipta aplikasi FastAPI
Pertama, kita perlu buat aplikasi FastAPI. Dalam direktori projek, cipta fail bernama main.py dan tulis kod berikut:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

3. Rekod log permintaan
Seterusnya, kami akan menggunakan perpustakaan loguru untuk merekod log permintaan. Tambahkan kod berikut pada fail main.py:

from loguru import logger
import uvicorn
from fastapi import FastAPI

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    logger.add("logs/request.log", rotation="10 MB")

@app.get("/")
async def root():
    logger.info("Hello World")
    return {"message": "Hello World"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

Dalam kod di atas, kami mula-mula mengimport objek logger perpustakaan loguru dan menambah logger fail. Kami menentukan laluan fail log sebagai log/request.log dan menetapkan saiz maksimum fail log kepada 10MB. Kemudian, dalam fungsi root(), kami menggunakan kaedah logger.info() untuk log permintaan.

4 Mulakan aplikasi
Simpan fail main.py dan kembali ke terminal, laksanakan arahan berikut untuk memulakan aplikasi FastAPI:

uvicorn main:app --reload

Terminal akan mengeluarkan URL akses aplikasi, seperti http://. 127.0.0.1:8000. Mengakses URL ini dalam penyemak imbas kita akan melihat mesej "Hello World". Buka fail logs/request.log dan kami akan melihat rekod log permintaan.

5. Memantau permintaan
Selain merekodkan log permintaan, kami juga boleh memantau masa pemprosesan dan kod status permintaan. Untuk melaksanakan fungsi ini, kita perlu menggunakan Middleware yang disediakan oleh FastAPI. Tambahkan kod berikut pada fail main.py:

from loguru import logger
import time
import uvicorn
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    logger.add("logs/request.log", rotation="10 MB")

@app.on_event("shutdown")
async def shutdown_event():
    logger.remove(handler_id="request_logger")

@app.middleware("http")
async def log_request(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    process_time = time.time() - start_time

    logger.info(
        "Request: {method} {url} {status_code} {process_time:.2f}ms",
        method=request.method,
        url=request.url,
        status_code=response.status_code,
        process_time=process_time * 1000,
    )

    return response

@app.get("/")
async def root():
    logger.info("Hello World")
    return {"message": "Hello World"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

Dalam kod di atas, kami mula-mula mengimport modul masa dan menambah masa tidur dalam fungsi root() untuk mensimulasikan masa pemprosesan permintaan. Kemudian, kami menambah logik untuk mengira masa pemprosesan permintaan dan merekodkan kod status permintaan dalam fungsi middleware log_request(). Dalam fungsi shutdown_event(), kami memadamkan pembalak yang telah ditambahkan sebelum ini.

Sekarang, mulakan semula aplikasi FastAPI dan lawati URL aplikasi dalam penyemak imbas anda. Muat semula halaman dalam pelayar dan buka fail log/request.log Kami akan melihat rekod log permintaan termasuk kaedah permintaan, URL, kod status dan masa pemprosesan.

Kesimpulan:
Artikel ini menerangkan cara melaksanakan pengelogan dan pemantauan permintaan dalam FastAPI. Kami menggunakan perpustakaan loguru untuk merekodkan log permintaan dan menggunakan Middleware FastAPI untuk memantau masa pemprosesan permintaan dan kod status. Ciri ini membolehkan kami menjejak dan memantau permintaan dan respons aplikasi dengan lebih baik. Di atas adalah contoh kod untuk melaksanakan pengelogan dan pemantauan permintaan.

Bahan rujukan:

  • Dokumentasi rasmi FastAPI: https://fastapi.tiangolo.com/
  • dokumentasi rasmi loguru: https://loguru.readthedocs.io/

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengelogan dan pemantauan permintaan 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