PProxy2 / run.py
Mythus's picture
Update run.py
f14963b verified
raw
history blame contribute delete
876 Bytes
from contextlib import asynccontextmanager
from typing import AsyncIterator
from fastapi import FastAPI
from fastapi_proxy_lib.core.http import ForwardHttpProxy
from fastapi_proxy_lib.core.tool import default_proxy_filter
from httpx import AsyncClient
from starlette.requests import Request
proxy = ForwardHttpProxy(AsyncClient(), proxy_filter=default_proxy_filter)
@asynccontextmanager
async def close_proxy_event(_: FastAPI) -> AsyncIterator[None]:
"""Close proxy."""
yield
await proxy.aclose()
app = FastAPI(lifespan=close_proxy_event)
@app.api_route("/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "CONNECT"])
async def _(request: Request, path: str = ""):
return await proxy.proxy(request=request, path=path)
if __name__ == '__main__':
import uvicorn
uvicorn.run("run:app", host="0.0.0.0", port="8080")