main.py 2.2 KB

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