2013-09-11 31 views
12

Đây là kịch bản của tôi:Tạo hàng đợi động với Celery

Khi người dùng đăng nhập vào trang web của mình, tôi xếp hàng loạt nhiệm vụ cho người dùng cụ thể (thường mỗi tác vụ mất 100 giây) và có 100 nhiệm vụ Mỗi người dùng). Các nhiệm vụ này được xếp hàng đợi đến hàng đợi Celery mặc định và tôi có 100 công nhân đang chạy. Tôi sử dụng các ổ cắm web để hiển thị tiến trình thời gian thực của người dùng khi các tác vụ hoàn thành trên chương trình phụ trợ. Cuộc sống là tốt nếu tôi chỉ có 1 hoặc 2 người dùng hoạt động.

Bây giờ nếu một vài người dùng đồng thời đăng nhập vào trang web của tôi, người dùng thứ hai sẽ được xếp hàng phía sau người dùng ban đầu và nhiệm vụ của họ bị bỏ đói (vì tất cả các tác vụ đều đi đến cùng một hàng đợi). Suy nghĩ của tôi là tạo hàng đợi động cho mỗi người dùng để đảm bảo tính công bằng. Tuy nhiên, theo tài liệu của Celery (http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues), có vẻ như tôi cần xác định hàng đợi tĩnh.

Bất kỳ đề xuất nào về thực tiễn tốt nhất để sử dụng cần tây cho kịch bản của tôi?

+0

Sẽ không có hàng đợi động đánh bại các đối tượng của queing? 100 tác vụ nghe có vẻ như rất nhiều cho mỗi người dùng. Những thứ này có thể không được nhóm lại với nhau để nhân viên có thể kéo tất cả nhiệm vụ của người dùng cùng một lúc không? Bằng cách đó, người dùng sẽ có một nhân viên chuyên dụng cho quá trình đăng nhập. Tất cả các tác vụ đăng nhập có cần chạy đồng bộ không? –

+0

@JoeDoherty - Tôi không nhận được quan điểm của bạn về cách hàng đợi động sẽ đánh bại đối tượng xếp hàng. Tuy nhiên, đề xuất của bạn về việc xử lý theo lô tất cả các nhiệm vụ cho mỗi người dùng là một nhiệm vụ lớn rất thú vị và chắc chắn sẽ làm giảm bớt vấn đề của tôi - cảm ơn !. Từ quan điểm thiết kế, tôi đã cố gắng đi cho một nhóm công nhân lớn thực hiện các tác vụ nhỏ/nhanh (so với các nhiệm vụ chạy dài). Tôi vẫn muốn được quan tâm để xem nếu có một tùy chọn để tạo ra hàng đợi trên bay mặc dù - Tôi có thể thấy điều này là hữu ích ngay cả khi tôi lô nhiệm vụ người dùng. –

+0

@JoeDoherty - Về 'Có phải tất cả các tác vụ đăng nhập cần phải chạy đồng bộ' - câu trả lời là 'Không'. Yêu cầu là tất cả chúng đều hoàn thành trong một khoảng thời gian hợp lý vì người dùng đang đợi kết quả của các nhiệm vụ được hoàn thành trên trang web. –

Trả lời

Các vấn đề liên quan