incomming mail processing
This commit is contained in:
+22
-1
@@ -1,8 +1,10 @@
|
||||
## Copyright © 2026 Olaf Kolkman
|
||||
## SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from contextlib import asynccontextmanager
|
||||
from fastapi import FastAPI, Request
|
||||
import logging
|
||||
from threading import Event, Thread
|
||||
from uuid import uuid4
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.responses import RedirectResponse
|
||||
@@ -20,12 +22,31 @@ from backend.app.api.setup import has_administrator
|
||||
from backend.app.api.user_config import router as user_config_router
|
||||
from backend.app.core.config import settings, validate_configuration
|
||||
from backend.app.database import AVATARS_DIR
|
||||
from backend.app.services.inbound_email_service import run_imap_polling
|
||||
from backend.app.services.link_service import get_public_profile
|
||||
|
||||
logging.basicConfig(level=getattr(logging, settings.log_level, logging.INFO))
|
||||
validate_configuration(settings)
|
||||
|
||||
app = FastAPI(title='LinkLog API', version=settings.version)
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(_: FastAPI):
|
||||
stop_event = Event()
|
||||
worker = Thread(
|
||||
target=run_imap_polling,
|
||||
args=(stop_event, logging.getLogger('backend.app.services.inbound_email_service')),
|
||||
name='linklog-imap-poller',
|
||||
daemon=True,
|
||||
)
|
||||
worker.start()
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
stop_event.set()
|
||||
worker.join(timeout=2)
|
||||
|
||||
|
||||
app = FastAPI(title='LinkLog API', version=settings.version, lifespan=lifespan)
|
||||
|
||||
|
||||
@app.middleware('http')
|
||||
|
||||
Reference in New Issue
Block a user