У меня есть класс для отправки уведомлений. При инициализации требуется подключение к серверу уведомлений, что занимает много времени. Я использую фоновую задачу в FastAPI для отправки уведомлений, так как не хочу задерживать ответ из-за уведомления. Ниже приведен пример кода.
file1.py:
noticlient = NotificationClient()
@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, noticlient)
return result
file2.py:
def add_some_tasks(data, background_tasks: BackgroundTasks, noticlient):
background_tasks.add_task(noticlient.send, param1, param2)
result = some_operation
return result
Здесь клиент уведомлений объявлен глобально. Я мог бы инициализировать его в файле file2.py в разделе add_some_tasks, но он будет инициализироваться каждый раз при поступлении запроса, а это потребует некоторого времени. Есть ли способ использовать промежуточное программное обеспечение для повторного использования каждый раз при поступлении запроса, чтобы его не нужно было инициализировать каждый раз.
или
Подход два : Инициализировать уведомление в def класса
file1.py:
class childFastApi(FastAPI):
noticlient = NotificationClient()
app = childFastApi()
@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, app.noticlient)
return result
Подробнее здесь: https://stackoverflow.com/questions/763 ... stapi-endp
Как инициализировать глобальный объект или переменную и повторно использовать его в каждой конечной точке FastAPI? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение