Lewati ke isi

Antarmuka FastAPI

Logfire akan API cepat Alat khusus dan pihak ketiga dan logfire.instrument_fastapi() Metode.

menginstal

Instal logfire dengan fastapi ekstra:

{{ install_logfire(extras=['fastapi']) }}

penggunaan

Kami memiliki contoh minimal di bawah ini. Silakan instal Uvicorn untuk menjalankannya:

pip install uvicorn

Anda dapat menjalankannya dengan python main.py:

main.py
import logfire
from fastapi import FastAPI

app = FastAPI()

logfire.configure()
logfire.instrument_fastapi(app)


@app.get("/hello")
async def hello(name: str):
    return {"message": f"hello {name}"}


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app)

Kemudian kunjungi http://localhost:8000/hello?name=world dan periksa log.

OpenTelemetry Instrumentasi FastAPI

Paket OpenTelemetry FastAPI Instrumentation pihak ketiga menambahkan rentang untuk setiap permintaan, yang berisi properti terperinci tentang permintaan HTTP, seperti URL lengkap dan agen pengguna. Dengan waktu mulai dan berakhir, Anda dapat melihat berapa lama waktu yang dibutuhkan untuk memproses setiap permintaan.

[logfire.instrument_fastapi()][logfire. secara default, Logfire. instrument _ fastapi] menerapkan deteksi ini. Anda dapat menonaktifkannya dengan melewati use_opentelemetry_instrumentation=False.

logfire.instrument_fastapi() juga menerima argumen kata kunci tambahan dan meneruskannya ke metode OpenTelemetry FastAPIInstrumentor.instrument_app(). Lihat dokumentasi mereka untuk lebih jelasnya.

Instrumentasi logfire: mencatat parameter endpoint dan kesalahan validasi

logfire.instrument_fastapi() akan mengeluarkan bentang yang disebut FastAPI 参数 untuk setiap permintaan, yang menunjukkan berapa lama waktu yang dibutuhkan FastAPI untuk mengurai dan memvalidasi parameter fungsi titik akhir dalam permintaan dan menyelesaikan ketergantungan apa pun. Secara default, bentang juga akan berisi sifat-sifat berikut:

  • values Peta nama parameter fungsi titik akhir ke kamus nilai yang diselesaikan dan divalidasi.

  • errors: Daftar kesalahan validasi untuk setiap input yang tidak valid.

Anda bisa melewati request_attributes_mapper Fungsi diteruskan ke instrument_fastapi Untuk menyesuaikan fungsi ini. Fungsi ini akan menjadi Request atau WebSocket Objek dipanggil bersama dengan kamus properti default. Itu harus mengembalikan kamus properti baru, atau mengembalikan None Atur level rentang ke "debug" sehingga tersembunyi secara default. Sebagai contoh:

import logfire

app = ...


def request_attributes_mapper(request, attributes):
    if attributes["errors"]:
        # Only log validation errors, not valid arguments
        return {
            "errors": attributes["errors"],
            "my_custom_attribute": ...,
        }
    else:
        # Don't log anything for valid requests
        return None


logfire.configure()
logfire.instrument_fastapi(app, request_attributes_mapper=request_attributes_mapper)

Perhatian

[request_attributes_mapper][logfire.Logfire.instrument_fastapi(request_attributes_mapper)] Fungsi tidak boleh diubah 值 atau 错误 Tapi itu bisa dengan aman menggantinya dengan nilai-nilai baru.

Kecualikan URL dari deteksi

Untuk menghindari pelacakan URL tertentu, Anda dapat menentukan serangkaian ekspresi reguler yang dipisahkan koma yang akan sesuai dengan URL permintaan lengkap. Ini dapat diteruskan ke:

  • instrument_fastapi seperti [excluded_urls ][logfire.Logfire.instrument_fastapi(excluded_urls)], misalnya:logfire.instrument_fastapi(app, excluded_urls='/health')

  • Variabel lingkungan OTEL_PYTHON_FASTAPI_EXCLUDED_URLS.

  • Variabel lingkungan OTEL_PYTHON_EXCLUDED_URLS(ini juga berlaku untuk tes lain).

Tangkap permintaan dan tanggapan header


本文总阅读量次