Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

296
Vistas
¿Cómo usar vistas basadas en funciones asíncronas en DRF?

Dado que Django ahora admite vistas asíncronas, estoy tratando de cambiar mi base de código que contiene muchas vistas basadas en funciones para que sean asíncronas, pero por alguna razón no funciona.

 @api_view(["GET"]) async def test_async_view(request): ... data = await get_data() return Response(data)

Cuando envío una solicitud a este punto final, aparece un error que dice:

AssertionError: se esperaba que se devolviera una Response , HttpResponse o HttpStreamingResponse desde la vista, pero recibió una <class 'coroutine'>

¿DRF aún no admite vistas asíncronas? ¿Hay alguna alternativa que pueda hacer para que esto funcione?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

A partir de ahora, DRF no admite "vistas de API" asíncronas. Aquí hay un tema abierto (#7260) en la comunidad DRF y todavía está en la etapa de discusión.

Pero, Django proporciona un decorador/envoltorio que nos permite convertir nuestras vistas/funciones de sincronización en asíncronas usando sync_to_async(...) .

Ejemplo,

 @sync_to_async @api_view(["GET"]) def sample_view(request): data = get_data() return Response(data)

Tenga en cuenta que, aquí, sample_view(...) y get_data(...) son funciones de sincronización.

over 4 years ago · Santiago Trujillo Denunciar

0

Creo que puedes usar este decorador en DRF

 import asyncio from functools import wraps def to_async(blocking): @wraps(blocking) def run_wrapper(*args, **kwargs): return asyncio.run(blocking(*args, **kwargs)) return run_wrapper

Ejemplo de uso

 @to_async @api_view(["GET"]) async def sample_view(request): ...
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda