Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 317новых вакансий за сутки·93 956вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 293
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 404 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 139
  • Облачные технологии14 062
  • QA вакансии3 444
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 261

Разработка

  • Android1 854
  • iOS1 693
  • Fullstack вакансии989
  • AI вакансии953
  • Frontend вакансии750
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 527
  • Node.js2 022
  • .NET1 720
  • Kotlin1 595
  • Rust1 462
  • C#708
  • PHP683
  • C++573

DevOps и инфраструктура

  • Kubernetes7 762
  • DevOps вакансии6 053
  • Linux-инфраструктура5 487
  • Terraform / IaC4 265
  • CI/CD3 238
  • Мониторинг и Observability1 789
  • SRE571
  • Кибербезопасность460

Аналитика и данные

  • Data Scientist1 138
  • Бизнес-аналитик922
  • Аналитик данных856
  • Системный аналитик152

Другие направления

  • Проджект-менеджер619
  • UI/UX дизайн144
  • Ручное тестирование14

По регионам

  • Вакансии в США44 498
  • Вакансии в Европе23 818
  • Вакансии в Канаде4 529
  • Работа в России3 898

По формату

  • Удалённые вакансии75 272
  • Релокация в США44 503
  • Гибридная работа12 389
  • Офисная работа7 082

По уровню

  • Senior вакансии42 742
  • Middle вакансии20 983
  • Junior вакансии6 731

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме DjangoВсе вопросы
DjangoSeniorОпыт

Какие production-риски есть у Django: blocking code, connection pooling, config, auth, observability, deploy или graceful shutdown?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Ключевые production-риски Django: синхронный ORM блокирует ASGI-воркеры, пул соединений требует pgbouncer, секреты в settings.py утекают в репо, SESSION_COOKIE_SECURE=False открывает session hijacking, отсутствие structured logging и health-check усложняет observability.

1. Blocking code в ASGI-окружении

Django ORM — синхронный. При запуске под Uvicorn/Daphne с async views вызов Model.objects.filter() напрямую блокирует event loop, что убивает конкурентность.

# Плохо — блокирует event loop
async def my_view(request):
    users = list(User.objects.all())  # блокирующий вызов!
    ...

# Правильно — sync_to_async обёртка
from asgiref.sync import sync_to_async

async def my_view(request):
    users = await sync_to_async(list)(User.objects.all())
    # или через database_sync_to_async декоратор
    ...

Production-риски Django

2. Connection pooling

Django открывает одно соединение с БД на поток. Gunicorn с --workers=8 --threads=4 создаёт 32 соединения. При масштабировании PostgreSQL быстро упирается в max_connections=100.

# settings.py — уменьшить CONN_MAX_AGE чтобы не держать соединения
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "CONN_MAX_AGE": 60,  # секунды (0 = закрывать после каждого запроса)
        "OPTIONS": {
            "pool": True,  # Django 5.1+ встроенный пул
        },
    }
}
# Или через pgbouncer как внешний пулер (рекомендуется)

3. Конфигурация и секреты

# settings.py — читать секреты только из окружения
import os
from pathlib import Path

SECRET_KEY = os.environ["DJANGO_SECRET_KEY"]  # не os.getenv() — ошибка при отсутствии
DEBUG = os.getenv("DEBUG", "False") == "True"
ALLOWED_HOSTS = os.environ["ALLOWED_HOSTS"].split(",")

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": os.environ["DB_NAME"],
        "USER": os.environ["DB_USER"],
        "PASSWORD": os.environ["DB_PASSWORD"],
        "HOST": os.environ["DB_HOST"],
    }
}

4. Auth и безопасность cookies

# settings.py — обязательные настройки для HTTPS
SESSION_COOKIE_SECURE = True      # cookie только по HTTPS
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True    # недоступен из JS
SESSION_COOKIE_SAMESITE = "Lax"   # защита от CSRF
SECURE_HSTS_SECONDS = 31536000
SECURE_SSL_REDIRECT = True
SECURE_BROWSER_XSS_FILTER = True

5. Observability: структурированные логи

# settings.py
LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "json": {
            "()": "pythonjsonlogger.jsonlogger.JsonFormatter",
            "format": "%(asctime)s %(name)s %(levelname)s %(message)s",
        },
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "formatter": "json",
        },
    },
    "root": {"handlers": ["console"], "level": "INFO"},
    "loggers": {
        "django.request": {"level": "WARNING"},
        "django.db.backends": {"level": "WARNING"},  # ERROR в проде
    },
}

6. Graceful shutdown и health-check

# myapp/views.py — health endpoint для load balancer
from django.db import connections
from django.db.utils import OperationalError
from django.http import JsonResponse

def health_check(request):
    try:
        connections["default"].ensure_connection()
        return JsonResponse({"status": "ok"})
    except OperationalError:
        return JsonResponse({"status": "db_unavailable"}, status=503)

Gunicorn поддерживает graceful shutdown через сигнал SIGTERM — завершает текущие запросы до graceful_timeout секунд. Настройка: --graceful-timeout 30.

7. Deploy без downtime

gunicorn myproject.wsgi:application \
  --workers 4 \
  --worker-class gthread \
  --threads 2 \
  --bind 0.0.0.0:8000 \
  --graceful-timeout 30 \
  --timeout 60 \
  --access-logfile -

Подводные камни

  • DEBUG=True в проде — раскрывает полный traceback с переменными окружения (включая SECRET_KEY) всем клиентам при 500-ошибке.
  • Миграции при деплое — запуск migrate во время работы без backward-compatible схемы ломает старые запущенные инстансы.
  • ALLOWED_HOSTS=[] по умолчанию — при DEBUG=False и пустом ALLOWED_HOSTS все запросы вернут 400.
  • Celery воркеры не получают SIGTERM корректно — без --statedb и правильного обработчика сигналов задачи теряются при остановке контейнера.
  • django.contrib.staticfiles в проде — DEBUG=True обслуживает статику через Django; в проде нужен collectstatic и nginx/CDN.
  • CONN_MAX_AGE=0 плюс pgbouncer в transaction mode — несовместимы с CONN_MAX_AGE > 0; persistent-соединения и pgbouncer transaction pooling конфликтуют.

Что портит ответ

  • Говорить только о запуске Django, но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

Что слушает интервьюер

  • Видит production-риски Django
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

Как вы знаете этот вопрос?

Проверить себя по теме Django →
←Предыдущий вопросКак реализовать rate limiting и throttling в Django REST Framework?Следующий вопрос→Что такое объект `Q` в Django и как он используется для сложных запросов?

Связанные темы

Djangoproduction-readinesstechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

  • Senior Software Engineer - Full Stack - Portal Platform
  • Middle Python Developer
  • Python Backend / AI Engineer
  • AI/AI Agent Developer (Python)
  • Full Stack Engineer, Contract

Частые вопросы на собеседовании

  • Как Django защищает от SQL-инъекций, CSRF и XSS-атак?
  • Как организовать настройки, secrets и environment-specific config без утечек?
  • Объясните жизненный цикл запроса/ответа в Django — от разрешения URL до HTTP-ответа.
  • Что такое проблема N+1 запросов в Django и как её обнаружить и исправить?