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:
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:
-
valuesPeta 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_fastapiseperti [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¶
本文总阅读量次