Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda