Tôi có một loạt các yêu cầu Django thực hiện một số tính toán toán học (được viết bằng C và được thực thi thông qua mô-đun Cython), có thể mất một lượng không xác định (theo thứ tự 1 giây) để thực thi. Ngoài ra các yêu cầu không cần phải truy cập vào cơ sở dữ liệu và tất cả đều độc lập với nhau và Django.Xử lý không đồng bộ Django
Ngay bây giờ mọi thứ đều đồng bộ (sử dụng Gunicorn với sync
loại công nhân) nhưng tôi muốn thực hiện điều này không đồng bộ và không chặn. Nói tóm lại tôi muốn làm điều gì đó:
- Nhận yêu cầu AJAX
- Phân bổ nhiệm vụ một nhân viên có sẵn (không có ngăn chặn các ứng dụng web chính Django)
- Worker thực hiện nhiệm vụ trong một số lượng không rõ thời gian
- Django trả về kết quả của việc tính toán (một danh sách các chuỗi) như JSON bất cứ khi nào nhiệm vụ hoàn thành
tôi rất mới để đồng bộ Django, và vì vậy câu hỏi của tôi là chồng tốt nhất fo là gì r làm điều này.
Đây có phải là loại quy trình mà hàng đợi nhiệm vụ phù hợp không? Có ai khuyên bạn nên Tornado + Celery + RabbitMQ, hoặc có lẽ cái gì khác?
Cảm ơn trước!
Bạn làm gì với kết quả tính toán? – sdolan
Trả lại kết quả (dưới dạng JSON) cho trình duyệt của người dùng. –