Django

Django Async & ASGI

ASGI vs WSGI, async views, sync_to_async, async_to_sync, hạn chế của ORM đồng bộ, hiệu năng async, database connection pooling

26 câu hỏi phỏng vấn·
Senior
1

Sự khác biệt chính giữa WSGI và ASGI là gì?

Câu trả lời

ASGI (Asynchronous Server Gateway Interface) mở rộng WSGI bằng cách bổ sung hỗ trợ cho lập trình bất đồng bộ và các kết nối duy trì như WebSockets. WSGI là đồng bộ và chỉ có thể xử lý một yêu cầu tại một thời điểm cho mỗi worker, trong khi ASGI có thể xử lý nhiều yêu cầu cùng lúc trong một tiến trình duy nhất nhờ event loop của asyncio.

2

Làm thế nào để khai báo một async view trong Django?

Câu trả lời

Một async view trong Django được khai báo đơn giản bằng cách dùng từ khóa async trước def. Django tự động phát hiện liệu view có bất đồng bộ hay không và chạy nó trong event loop phù hợp. Cú pháp native của Python 3.5+ này được hỗ trợ đầy đủ kể từ Django 3.1.

3

Vai trò của sync_to_async trong Django là gì?

Câu trả lời

sync_to_async là một adapter do asgiref cung cấp, cho phép chạy mã đồng bộ trong ngữ cảnh bất đồng bộ. Nó bọc một hàm đồng bộ và thực thi trong một thread pool riêng, qua đó tránh làm nghẽn event loop. Điều này là thiết yếu để gọi ORM của Django từ một async view vì ORM là đồng bộ.

4

Tại sao không thể dùng ORM của Django trực tiếp trong một async view?

5

Vai trò của async_to_sync trong Django là gì?

+23 câu hỏi phỏng vấn

Nắm vững Django cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí