Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про FastAPI: dependency injection, websocket, http, fastapi

Не могли бы вы продемонстрировать случай, когда Вы предпочли бы использовать протокол HTTP напрямую вместо внедрения зависимостей FastAPI?

Этот вопрос затрагивает сценарии, когда использование низкоуровневых протоколов (например, WebSocket) напрямую может быть предпочтительнее, чем использование системы внедрения зависимостей FastAPI.

Короткий ответ

В случаях, когда требуется прямой доступ к данным или протоколам, например, для WebSocket-серверов, может быть удобнее работать напрямую с протоколом, минуя систему внедрения зависимостей.

Длинный ответ

FastAPI предоставляет удобные средства для работы с HTTP-запросами и маршрутизацией через систему внедрения зависимостей. Однако в некоторых случаях, например, при реализации WebSocket-сервера с использованием бинарных протоколов или других нестандартных сетевых операций, может потребоваться прямой доступ к сокетам или данным.

Пример использования WebSocket с низкоуровневым доступом через Uvicorn:

import uvicorn
from starlette.websockets import WebSocket

async def app(scope, receive, send):
    	websocket = WebSocket(scope, receive, send)
    	await websocket.accept()
    	while True:
        	data = await websocket.receive_text()
        	# Обработка данных
        	await websocket.send_text(f"Processed: {data}")

if __name__ == "__main__":
    	uvicorn.run(app, host="127.0.0.1", port=8000)

Здесь можно напрямую работать с соединением и данным потоком, минуя высокоуровневую абстракцию, как в FastAPI.

Когда использовать:

  • При низкоуровневых операциях, например, при реализации специфичных сетевых протоколов или использования WebSocket для бинарных данных.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • FastAPI

    FastAPI

Ключевые слова

#dependency injection

#websocket

#http

#fastapi

Подпишись на Python Developer в телеграм