mirror of
https://github.com/QuivrHQ/quivr.git
synced 2024-12-15 01:21:48 +03:00
a95e311712
This pull request adds the ingestion module and routes to the project. It includes the necessary files and code changes to implement the ingestion functionality.
111 lines
3.4 KiB
Python
111 lines
3.4 KiB
Python
import os
|
|
|
|
if __name__ == "__main__":
|
|
# import needed here when running main.py to debug backend
|
|
# you will need to run pip install python-dotenv
|
|
from dotenv import load_dotenv # type: ignore
|
|
|
|
load_dotenv()
|
|
import sentry_sdk
|
|
from fastapi import FastAPI, HTTPException
|
|
from fastapi.responses import JSONResponse
|
|
from logger import get_logger
|
|
from middlewares.cors import add_cors_middleware
|
|
from modules.api_key.controller import api_key_router
|
|
from modules.brain.controller import brain_router
|
|
from modules.chat.controller import chat_router
|
|
from modules.contact_support.controller import contact_router
|
|
from modules.ingestion.controller import ingestion_router
|
|
from modules.knowledge.controller import knowledge_router
|
|
from modules.misc.controller import misc_router
|
|
from modules.notification.controller import notification_router
|
|
from modules.onboarding.controller import onboarding_router
|
|
from modules.prompt.controller import prompt_router
|
|
from modules.upload.controller import upload_router
|
|
from modules.user.controller import user_router
|
|
from packages.utils import handle_request_validation_error
|
|
from packages.utils.telemetry import send_telemetry
|
|
from routes.crawl_routes import crawl_router
|
|
from routes.subscription_routes import subscription_router
|
|
from sentry_sdk.integrations.fastapi import FastApiIntegration
|
|
from sentry_sdk.integrations.starlette import StarletteIntegration
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
if os.getenv("DEV_MODE") == "true":
|
|
import debugpy
|
|
|
|
logger.debug("👨💻 Running in dev mode")
|
|
debugpy.listen(("0.0.0.0", 5678))
|
|
|
|
|
|
def before_send(event, hint):
|
|
# If this is a transaction event
|
|
if event["type"] == "transaction":
|
|
# And the transaction name contains 'healthz'
|
|
if "healthz" in event["transaction"]:
|
|
# Drop the event by returning None
|
|
return None
|
|
# For other events, return them as is
|
|
return event
|
|
|
|
|
|
sentry_dsn = os.getenv("SENTRY_DSN")
|
|
if sentry_dsn:
|
|
sentry_sdk.init(
|
|
dsn=sentry_dsn,
|
|
sample_rate=0.1,
|
|
enable_tracing=True,
|
|
traces_sample_rate=0.1,
|
|
integrations=[
|
|
StarletteIntegration(transaction_style="url"),
|
|
FastApiIntegration(transaction_style="url"),
|
|
],
|
|
before_send=before_send,
|
|
)
|
|
|
|
app = FastAPI()
|
|
|
|
add_cors_middleware(app)
|
|
|
|
app.include_router(brain_router)
|
|
app.include_router(chat_router)
|
|
app.include_router(crawl_router)
|
|
app.include_router(ingestion_router)
|
|
app.include_router(onboarding_router)
|
|
app.include_router(misc_router)
|
|
|
|
app.include_router(upload_router)
|
|
app.include_router(user_router)
|
|
app.include_router(api_key_router)
|
|
app.include_router(subscription_router)
|
|
app.include_router(prompt_router)
|
|
app.include_router(notification_router)
|
|
app.include_router(knowledge_router)
|
|
app.include_router(contact_router)
|
|
|
|
|
|
@app.exception_handler(HTTPException)
|
|
async def http_exception_handler(_, exc):
|
|
return JSONResponse(
|
|
status_code=exc.status_code,
|
|
content={"detail": exc.detail},
|
|
)
|
|
|
|
|
|
handle_request_validation_error(app)
|
|
|
|
if os.getenv("TELEMETRY_ENABLED") == "true":
|
|
logger.info("Telemetry enabled, we use telemetry to collect anonymous usage data.")
|
|
logger.info(
|
|
"To disable telemetry, set the TELEMETRY_ENABLED environment variable to false."
|
|
)
|
|
send_telemetry("booting", {"status": "ok"})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# run main.py to debug backend
|
|
import uvicorn
|
|
|
|
uvicorn.run(app, host="0.0.0.0", port=5050)
|