๐ ๏ธ¶
๐ ๐ช ๐ฎ ๐ ๏ธ FastAPI ๐ธ.
"๐ ๏ธ" ๐ข ๐ ๐ท โฎ๏ธ ๐ ๐จ โญ โซ๏ธ ๐ ๏ธ ๐ ๐ฏ โก ๐ ๏ธ. & โฎ๏ธ ๐ ๐จ โญ ๐ฌ โซ๏ธ.
- โซ๏ธ โ ๐ ๐จ ๐ ๐ ๐ ๐ธ.
- โซ๏ธ ๐ช โคด๏ธ ๐ณ ๐ ๐จ โ๏ธ ๐ ๐ ๐ช ๐.
- โคด๏ธ โซ๏ธ ๐ถโโ๏ธ ๐จ ๐ ๏ธ ๐ ๐ธ ( โก ๐ ๏ธ).
- โซ๏ธ โคด๏ธ โ ๐จ ๐ ๐ธ ( โก ๐ ๏ธ).
- โซ๏ธ ๐ช ๐ณ ๐ ๐จ โ๏ธ ๐ ๐ ๐ช ๐.
- โคด๏ธ โซ๏ธ ๐จ ๐จ.
๐ก โน
๐ฅ ๐ โ๏ธ ๐ โฎ๏ธ yield
, ๐ช ๐ ๐ ๐ โฎ๏ธ ๐ ๏ธ.
๐ฅ ๐ค ๐ ๐ฅ ๐ (๐ โช), ๐ซ ๐ ๐ โฎ๏ธ ๐ ๐ ๏ธ.
โ ๐ ๏ธ¶
โ ๐ ๏ธ ๐ โ๏ธ ๐จโ๐จ @app.middleware("http")
๐ ๐ ๐ข.
๐ ๏ธ ๐ข ๐จ:
request
.- ๐ข
call_next
๐ ๐ ๐จrequest
๐ข.- ๐ ๐ข ๐ ๐ถโโ๏ธ
request
๐ โก ๐ ๏ธ. - โคด๏ธ โซ๏ธ ๐จ
response
๐ ๐ โก ๐ ๏ธ.
- ๐ ๐ข ๐ ๐ถโโ๏ธ
- ๐ ๐ช โคด๏ธ ๐ ๐
response
โญ ๐ฌ โซ๏ธ.
import time
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
return response
Tip
โ๏ธ ๐คฏ ๐ ๐ ยฉ ๐ ๐ช ๐ฎ โ๏ธ 'โ-' ๐ก.
โ๏ธ ๐ฅ ๐ โ๏ธ ๐ ๐ ๐ ๐ ๐ ๐ฉโ๐ป ๐ฅ ๐ช ๐, ๐ ๐ช ๐ฎ ๐ซ ๐ โ ๐ณ (โ (โ๏ธ-๐จ๐ณ โน ๐ค)) โ๏ธ ๐ข expose_headers
๐ ๐ โ ๐ฉบ.
๐ก โน
๐ ๐ช โ๏ธ from starlette.requests import Request
.
FastAPI ๐ โซ๏ธ ๐ช ๐, ๐ฉโ๐ป. โ๏ธ โซ๏ธ ๐ ๐ โช๏ธโก๏ธ ๐.
โญ & โฎ๏ธ response
¶
๐ ๐ช ๐ฎ ๐ ๐ โฎ๏ธ request
, โญ ๐ โก ๐ ๏ธ ๐จ โซ๏ธ.
& โฎ๏ธ response
๐, โญ ๐ฌ โซ๏ธ.
๐ผ, ๐ ๐ช ๐ฎ ๐ ๐ X-Process-Time
โ ๐ฐ ๐ฅ ๐ โซ๏ธ โ ๐ ๏ธ ๐จ & ๐ ๐จ:
import time
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
return response
๐ ๐ ๏ธ¶
๐ ๐ช โช โ ๐ ๐ ๐ ๐ ๏ธ ๐ง ๐ฉโ๐ป ๐ฆฎ: ๐ง ๐ ๏ธ.
๐ ๐ โ ๐ โ ๐ต โ โฎ๏ธ ๐ ๏ธ โญ ๐.