2011-06-27 31 views
7

Tôi đang bắt đầu với Celery cho một dự án Django. Đối với mục đích phát triển địa phương tôi đã thiết lập nó với djcelery và djkombu (cơ sở dữ liệu giao thông vận tải), theo các instructiuons http://ask.github.com/celery/tutorials/otherqueues.html#django-database nhưng kế hoạch sử dụng rabbitmq trên máy chủ sản xuất.Cách chẩn đoán nhân viên Celery treo

Tôi nhận thấy rằng nó hoạt động nhưng một hoặc nhiều công nhân sẽ bị treo ngẫu nhiên. Các công nhân treo trên các nhiệm vụ khác nhau, do đó, nó không phải là một trường hợp một nhiệm vụ cụ thể đang bước vào một vòng lặp vô hạn. Khi tôi cố gắng để đóng cửa cần tây, trong nhật ký tôi thường thấy tất cả các công nhân thoát trừ một. Cả trước và sau khi một nhân viên bị treo, tôi đã thử sử dụng celeryctl để lấy thông tin về người lao động, nhưng celeryctl luôn thất bại với một thông báo "Lỗi: Không có nút nào trả lời trong giới hạn thời gian. ". Tôi cũng đã thử kiểm tra công nhân http://docs.celeryproject.org/en/latest/userguide/workers.html#inspecting-workers nhưng tất cả các phương thức đều không trả lại gì cả.

Bất kỳ ý tưởng nào về cách chẩn đoán nguyên nhân khiến nhân viên bị treo hoặc sẽ hữu ích.

+0

Đầu tiên chạy cần tây trên vỏ với mức DEBUG celeryd DEBUG -l. Khi bạn khởi động lại cần tây hoặc dừng nó Poolworker đang thực hiện một nhiệm vụ không được khởi động lại cho đến khi công việc kết thúc, đây là một hành vi bình thường. Tất nhiên là không bình thường khi nhiệm vụ của bạn bị chặn ngẫu nhiên. Điều này không bao giờ xảy ra với tôi với Rabbit MQ, Có thể có thể đó là một cái gì đó liên quan đến khóa db hoặc kết nối .. Bạn đang sử dụng MYSQL InnoDB? Aniway Tôi đề nghị một nhà môi giới thay vì vận chuyển db –

+0

Bạn đang chạy phiên bản nào? – asksol

Trả lời

1

Tôi đã gặp sự cố tương tự. Tôi nghĩ rằng điều này là do bạn đang sử dụng ghettoq không hỗ trợ sự kiện.

theo hỏi:

remote control commands (broadcast) and events does not work with ghettoq.

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