Серверная часть приложений "Мой СибГУ".
- Каталог
src/хранит в себе все исходники, о них позже; .env.example- файл с переменными окружения, нужно переименовать в.env;fabfile.py- скрипты для деплой при помощи fabric;gunicorn.serviceиnginx.conf- конфиги для guincorn и nginx соответственно;PipfileиPipfile.lock- список зависимостей, сформированный при помощи pipenv;.flake8- настройки для flake8;
Остальные файлы, на мой взгляд, не нуждаются в описании.
Все исходники лежат в папке src/. Она состоит из следющих каталогов:
apps/- все приложения:campus_sibsau/- приложение, содержащее в себе различную статичную информацию о ВУЗе;informing/- приложение, отвечающее за информирование (новости, мероприятия, пуш уведомления);support/- помощь студентам;surveys/- опросы;timetable/- расписание.
core/- настройки проекта;logs/- логи приложений;resources/- медиа, статика и шаблоны проекта;tests/- тесты для приложений;manage.py- если вы не знаете что это, пожалуйста, не трогайте этот проект.
DEBUG - включен режим отладки или нет;
SECRET_KEY - секретный ключ django;
ADMIN_URL - адрес по которому находится панель администратора;
Настройки БД:
DATABASE_HOST- адрес базы данных;DATABASE_PORT- порт базы данных;DATABASE_NAME- название базы;DATABASE_USER- пользователь, у которого есть доступ к этой базе;DATABASE_PASSWORD- пароль этого пользователя.
SENTRY - включено ли sentry;
DSN - токен sentry;
TG_TOKEN - токен от telegram, нужен для отправки ошибок в лс;
TG_DELVELOPER - кому отправлять ошибки
Конфиги для деплоя:
SERVER- куда деплоить;SERVER_PORT- порт SSH;SERVER_PASSWORD- пароль суперюзера;SERVER_PATH- папка в которую грузить исходники
Как правило, все приложения имеют следующую структуру:
api/- папка для работы api:docs.py- документация API методов для swager;serializers.py- сериалайзеры для моделек;urls.py- урлы для контроллеров;views.py- контроллеры.
migrations/- миграции приложения;services/- сервисный слой;admin.py- регистрация моделек в админке;apps.py- настройки приложения;models.py- модельки.
Мы хостились на сервере за 89 рублей в месяц, оперативы мало, проц слабенький. Когда прилетало по 10к запросов в день, сервер начинал задыхаться. Было обнаружено, что самым узким местом являются сериалайзеры из DRF. Поэтому переписал их на самый быстрый вариант.
drf_yasg умеет генерировать документацию только из сериалайзеров DRF, однако у нас ведь кастомные. Вот и приходится писать все руками.
Да, каюсь. Но момент упущен. Однако я постараюсь покрыть все покрыть хотя бы дымными тестами.