Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!