app.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import warnings
  2. with warnings.catch_warnings():
  3. warnings.simplefilter('ignore')
  4. from fastapi import (
  5. FastAPI,
  6. )
  7. import openhands.agenthub # noqa F401 (we import this to get the agents registered)
  8. from openhands.server.middleware import (
  9. AttachSessionMiddleware,
  10. InMemoryRateLimiter,
  11. LocalhostCORSMiddleware,
  12. NoCacheMiddleware,
  13. RateLimitMiddleware,
  14. )
  15. from openhands.server.routes.auth import app as auth_api_router
  16. from openhands.server.routes.conversation import app as conversation_api_router
  17. from openhands.server.routes.feedback import app as feedback_api_router
  18. from openhands.server.routes.files import app as files_api_router
  19. from openhands.server.routes.public import app as public_api_router
  20. from openhands.server.routes.security import app as security_api_router
  21. from openhands.server.shared import config
  22. from openhands.utils.import_utils import get_impl
  23. app = FastAPI()
  24. app.add_middleware(
  25. LocalhostCORSMiddleware,
  26. allow_credentials=True,
  27. allow_methods=['*'],
  28. allow_headers=['*'],
  29. )
  30. app.add_middleware(NoCacheMiddleware)
  31. app.add_middleware(
  32. RateLimitMiddleware, rate_limiter=InMemoryRateLimiter(requests=10, seconds=1)
  33. )
  34. @app.get('/health')
  35. async def health():
  36. return 'OK'
  37. app.include_router(auth_api_router)
  38. app.include_router(public_api_router)
  39. app.include_router(files_api_router)
  40. app.include_router(conversation_api_router)
  41. app.include_router(security_api_router)
  42. app.include_router(feedback_api_router)
  43. AttachSessionMiddlewareImpl = get_impl(
  44. AttachSessionMiddleware, config.attach_session_middleware_class
  45. )
  46. app.middleware('http')(AttachSessionMiddlewareImpl(app, target_router=files_api_router))
  47. app.middleware('http')(
  48. AttachSessionMiddlewareImpl(app, target_router=conversation_api_router)
  49. )
  50. app.middleware('http')(
  51. AttachSessionMiddlewareImpl(app, target_router=security_api_router)
  52. )
  53. app.middleware('http')(
  54. AttachSessionMiddlewareImpl(app, target_router=feedback_api_router)
  55. )