Входные данные: Python-разработчик не может просто вскипятить воду. Нужно создать модель Tea и миграцию.
Django ORM: всё должно быть объектами:
Tea.objects.filter(is_hot=True) (но почему-то возвращает None)
Sugar(optional=True) (но всегда NULL в проде)
HotWater() выполняется за O(n^3) (потому что "потом оптимизируем")
Middleware: прежде чем выдать чай:
- проверить @login_required (гости чай не получают)
- добавить @cache_control (чтобы чай не остывал)
- запустить @transaction.atomic (иначе сахар может исчезнуть)
Error Handling: если чайник сломался:
вернуть 500 Internal Server Error
или TemplateDoesNotExist (шаблон чашки потерялся)
или ImproperlyConfigured (настройки чайника кривые)
Внешний сервис: особенности:
requests.get(timeout=1) (но ждём 30 секунд)
3 попытки (хотя вода уже закончилась после первой)
ConnectionError (соседи отключили API)
Выходной результат: чай с багами:
TypeError: NoneType is not drinkable
MigrationError: Сахара нет в базе
CircularImportError: чай пытается импортировать сам себя
Из рабочих чатов:
"Почему чай холодный? 🤮 Потому что забыли @async_to_sync"
"Почему в чашке MemoryError? 💩 Слишком много locals()"
"Кто-то сделал tea.save() но забыл commit=True 🤡"
"Чайник упал с SIGTERM (системный администратор экономил электричество) ☠️"
Не забываем про
venv/bin/activate_teapot
./manage.py brew_tea --force
requirements.txt с зависимостями (teapot==2.7.0, django-sugar-plugin)
(1-я серия про java)
(2-я серия про с#)
