Xử lý các tác vụ chạy nền với Celery và Redis

Một phần của tài liệu Luận văn Thạc sĩ Nghiên cứu và thử nghiệm phần mềm phân loại hành vi bò sử dụng thuật toán cây quyết định (Trang 38 - 40)

L ỜI CẢM ƠN

4.3.5. Xử lý các tác vụ chạy nền với Celery và Redis

Một số tác vụ xử lý trong phần mềm thử nghiệm đòi hỏi tính toán phức tạp, thời gian xửlý lâu nhƣ việc huấn luyện mô hình (cho mỗi đối tƣợng cá thể gia súc) và suy luận (inference) để phân loại ra kết quả từ mô hình đã huấn luyện sẵn. Các tác vụ này không thể xửlý đồng bộ trong luồng HTTP request từngƣời dùng. Vì thế àng đợi tác vụ (task queue) là một giải pháp tiện lợi cho các chƣơng trình để thực thi một tác vụ

một cách bất đồng bộ, linh hoat với tiến trình phục vụ. Tiến trình phục vụđƣợc thực thi

độc lập với ứng dụng và thậm chí có thểđƣợc đặt trên một hệ thống khác. Các giao tiếp giữa ứng dụng và tiến trình phục vụ sẽ đƣợc thực hiện qua message queue. Chƣơng

trình sẽ gởi công việc đến hàng đợi và theo dõi tiến trình công việc bằng cách tƣơng tác

ình 4-3: àng đợi tác vụ xửlý không đồng bộ

Giải pháp phổ biến nhất hiện nay cho hàng đợi tác vụđối với ngôn ngữ lập trình

Python là Celery. Đây là một ứng dụng tƣơng đối phức tạp với nhiều tùy chọn và hỗ

trợ một số kiểu hàng đợi khác nhau. Celery hỗ trợ tốt cho các tác vụ nền trong ứng dụng Django. Đối với giải pháp message broker, có nhiều phần mềm phổ biến nhƣ Redis, RabbitMQ, Kafka… Vốn là một chƣơng trình bộ đệm (cache) và có chức năng lƣu trữ trong bộ nhớ (RAM), Redis đơn giản và đƣợc sử dụng trong chƣơng trình này để hỗ trợ cho Celery. Sơ đồ nguyên lý hoạt động của Celery và Redis để chạy các tác vụ nền đƣợc hình dung ở hình 4-4.

Redis cũng có thể đƣợc sử dụng để lƣu trữ kết quả của tác vụ nền đƣợc thực hiện bởi Celery, tuy nhiên ở chƣơng trình thử nghiệm này chọn lƣu trữ kết quả Celery ngay trong cơ sở dữ liệu chính.

Một phần của tài liệu Luận văn Thạc sĩ Nghiên cứu và thử nghiệm phần mềm phân loại hành vi bò sử dụng thuật toán cây quyết định (Trang 38 - 40)

Tải bản đầy đủ (PDF)

(60 trang)