Комментарии 4
Извините, но написано как-то... не очень.
Основная претензия - зачем использовать словари, когда у вас используются модели на базе pydantic? Причём FastAPI умеет с ними работать и конвертировать их в JSON в ответе. Лично я считаю использование словарей в данном случае антипаттерном, так как нельзя просто посмотреть на них и понять, что в них может лежать.
В том же pydantic (правда, в отдельном пакете) есть очень удобная работа с настройками приложения - хоть из переменных окружения, хоть из файла .env, хоть откуда. Причём с валидацией значений, алиасами, подстановкой значений по умолчанию и прочим функционалом.
Непонятно, зачем нужно кеширование. Да, оно полезно, но конкретно здесь оно будет отдавать неактуальные данные. Кто-нибудь сделает запрос на ручку /work/workday
для изменения статуса worker'а, следом запросит/work/read
и удивится, почему данные не поменялись. В таком случае нужно сбрасывать кеш.
Сам код написан довольно небрежно. Где-то указаны типы, где-то нет. Длинные строки кода при работе с массивами. Непонятная конструкция list(worker_free.keys())[0]
- в чём проблема сразу взять ключ? В "Завершение и начало рабочего дня" кажется, что просто логически неверно поставлены True/False.
Согласен с тем, что код написан кое-как, например, в send_sms
если не найден ни один free_worker, то все упадет. Да и тестировать эти спагеттины явно сложно.
Только я не понял, а в чем проблема длиных строк? На понимание алгоритма не влияет, я бы даже сказал, что и хорошо, что не в несколько строк, а то спагеттина станет еще длиннее. На быстродействие вроде тоже не влияет.
Мне статья понравилась. Считаю ее очень полезной. На мой взгляд автор просто показал возможности кэширования и как его настраивать в коде. Кэш кстати хранится всего 30 сек, так что на счет неактуальности данных это преувеличение. То что используются словари вместо модели pydantic...., ну собственно и что? Как я думаю такой подход более нагляден для начинающих программистов, да и автор дал ссылки на них в pastebin. Тем более для моделей необходим дополнительный пакет.
Особенности асинхронного подхода
Асинхронность должна быть асинхронной? И это все особенности?)
Помощь логистам: как сделать SMS-уведомления о разгрузке товара на складе на основе FastAPI