Skip to content

Conversation

@rmirsh
Copy link

@rmirsh rmirsh commented Jul 22, 2024

Пул реквест от подписчика)
Добавил кэширование настроек, чтобы лишний раз не производилась инициализация. Думаю так будет быстрее, раз настройки с каждый проектом растут.

@mahenzon
Copy link
Owner

mahenzon commented Jul 22, 2024

Привет! Спасибо за PR!

А в чём преимущество такого подхода? Если вы импортируете готовый объект settings, то его питон инициализирует только единожды. Можно с вашей функции убрать декоратор кэш, внутрь добавить принт и посмотреть, сколько раз будет выведен принт. Я предполагаю, что лишь раз, если вы саму функцию не собираетесь где-то ещё вызывать, а вызывать её повторно нет никакого смысла, ведь мы ожидаем получить одинаковый результат.

А вы это где-то подглядели? Я уже это встречал и не понял, зачем это нужно.

@rmirsh
Copy link
Author

rmirsh commented Jul 23, 2024

Hello from config
Hello from config
INFO:     Will watch for changes in these directories: ['/Users/~/path/to/project']
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [88708] using WatchFiles
Hello from config
Hello from config
INFO:     Started server process [88714]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

Еще не разобрался до конца как сам декоратор работает, но, по меньшей мере, функция вызывается 4 раза на старте.
А так да, подглядел. Ментор сказал, что это best practice).

@mahenzon
Copy link
Owner

Соответствует ли это количеству импортов? А количеству вызовов функции? Делим на два потому что сервер перезапускался при инициализации. Я проверил, у меня по одному принту, хотя несколько импортов сделал. Я бы в чате в тг обсудил https://t.me/SurenTalk

Можете и ментора позвать в чат, я рад обсудить детали и прийти к лучшему решению совместно

@OneHandedPirate
Copy link

Вероятно, это из-за того, что каждый конфиг (GunicornConfig и т.д.) вызывается, а не просто передается (как DatabaseConfig). Но это не точно)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants