У меня есть класс для отправки уведомлений. При инициализации требуется подключение к серверу уведомлений, что занимает много времени. Я использую фоновую задачу в 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
Программы на Python
1733337169
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
Подробнее здесь: [url]https://stackoverflow.com/questions/76322463/how-to-initialize-a-global-object-or-variable-and-reuse-it-in-every-fastapi-endp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия