Как инициализировать глобальный объект или переменную и повторно использовать его в каждой конечной точке FastAPI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как инициализировать глобальный объект или переменную и повторно использовать его в каждой конечной точке FastAPI?

Сообщение Anonymous »

У меня есть класс для отправки уведомлений. При инициализации требуется подключение к серверу уведомлений, что занимает много времени. Я использую фоновую задачу в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»