main.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import socket
  2. import time
  3. from fastapi import FastAPI, Request
  4. from fastapi.responses import HTMLResponse
  5. from fastapi.staticfiles import StaticFiles
  6. from fastapi.templating import Jinja2Templates
  7. import requests
  8. import uvicorn
  9. from fastapi.responses import FileResponse,JSONResponse
  10. from fastapi import FastAPI, Depends, HTTPException, Form
  11. import httpx
  12. import os
  13. # from db.user import UserOAuthToken
  14. from config import *
  15. from fastapi.middleware.cors import CORSMiddleware
  16. from db.user import DatabaseManager
  17. from api.login import login_router
  18. from api.redis import RedisSession
  19. from starlette.middleware.sessions import SessionMiddleware
  20. from contextlib import asynccontextmanager
  21. app = FastAPI()
  22. app.add_middleware(
  23. CORSMiddleware,
  24. allow_origins=["*"],
  25. allow_credentials=True,
  26. allow_methods=["*"],
  27. allow_headers=["*"],
  28. )
  29. app.include_router(login_router)
  30. # 使用 Redis 会话
  31. redis_session = RedisSession("redis://localhost:8001")
  32. app.add_middleware(SessionMiddleware, secret_key=JWT_SECRET_KEY)
  33. @asynccontextmanager
  34. async def lifespan(app: FastAPI):
  35. # 在应用启动前运行的代码
  36. await redis_session.connect()
  37. yield
  38. # 在应用关闭后运行的代码
  39. await redis_session.disconnect()
  40. def get_session(request: Request):
  41. return request.session
  42. @app.get("/")
  43. async def read_root(request: Request):
  44. return {"message": "ok", "time":time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())}
  45. def main():
  46. print(f"https://open-douyin-cf.magong.site 公网代理地址,cloudflare dns proxy ,由 caddy 转发到 8600 端口")
  47. print(f"https://open-douyin-wk.magong.site 公网代理地址,cloudflare workers 转发到 8600 端口")
  48. print(f"http://sv-v2.magong.site:{PORT} ⭐ 推荐,仅支持 ipv6 ,直连、满速、无延迟。缺点是不支持 https 协议,因为不经过 Caddy 代理,直达 Fastapi 没有配置 https")
  49. print(f"https://open-douyin.magong.site 内网穿透隧道,cloudflare tunnel ,经常访问不了")
  50. print(f"https://swl-8l9.pages.dev/ 访问前端网站")
  51. uvicorn.run(app, host=None, port=PORT, log_level="info")
  52. if __name__ == "__main__":
  53. main()