Встречается на собеседованиях • сегодня

Если endpoint работает 30 секунд, какие действия предпримешь

Для начала, разберу возможные причины и решения:

  1. Оптимизация запроса
    Проверю, нет ли N+1 проблем, сложных JOIN'ов или отсутствия индексов в БД. Пример с индексом:

    python
    # До
    User.query.filter(User.name == 'John').all()
    
    # После добавления индекса
    index = Index('idx_user_name', User.name)
  2. Кеширование
    Добавлю кеш для тяжелых запросов через Redis:

    python
    from flask_caching import Cache
    cache = Cache(config={'CACHE_TYPE': 'Redis'})
    
    @cache.cached(timeout=60)
    def slow_endpoint():
        # heavy processing
  1. Асинхронность
    Переведу на async/await если есть IO-bound операции:

    python
    @app.route('/data')
    async def get_data():
        result = await db.fetch('SELECT * FROM large_table')
        return jsonify(result)
  2. Фоновые задачи
    Для CPU-bound задач вынесу в Celery:

    python
    @celery.task
    def process_data(data):
        # heavy computation
    
    @app.route('/process')
    def start_process():
        process_data.delay(request.json)
        return {'status': 'started'}
  3. Пагинация
    Разобью ответ на чанки:

    python
    @app.route('/items')
    def get_items():
        page = request.args.get('page', 1, type=int)
        per_page = 50
        pagination = Item.query.paginate(page, per_page)
        return jsonify({
            'items': [item.to_dict() for item in pagination.items],
            'total': pagination.total
        })
  4. Профилирование
    Использую cProfile или line_profiler для поиска узких мест.

  5. Лимитирование
    Добавлю rate limiting для защиты от злоупотреблений.

Выбор решения зависит от конкретного случая - сначала нужно определить bottleneck через мониторинг и профилирование.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы