2010-11-10 47 views
7

Vì một lý do nào đó, bất cứ khi nào tôi tạo và chạy một Tác vụ mới trong Celery, có vấn đề với việc trả lại kết quả. Nhiệm vụ đầu tiên trả về một cách hoàn hảo, nhưng đối với tất cả các tác vụ tiếp theo, kết quả luôn được chờ. Tôi đã kiểm tra nhật ký Celery, và nó nhận được kết quả chính xác mà không có lỗi, nhưng nó không thể trả lại nó.Cần tây không trả lại kết quả

Nếu có ích, tôi sẽ chạy rabbitmq làm chương trình phụ trợ của tôi.

+0

Phiên bản Celery là gì? Bạn sử dụng cái gì để lưu trữ kết quả? (CELERY_RESULT_BACKEND) – asksol

+0

Phiên bản 2.2 và rabbitmq là chương trình phụ trợ của tôi. – veered

+0

Chờ. Xin lỗi không có ý nghĩa gì cả. Tôi chưa thiết lập bất kỳ cơ sở dữ liệu nào, hoặc thay đổi bất kỳ cài đặt cấu hình nào. Điều đó có nghĩa là nó sẽ mặc định là AMQP? – veered

Trả lời

5

Vâng hóa ra tôi chỉ cần xác định rõ ràng một chương trình phụ trợ.

Thêm:

CELERY_RESULT_BACKEND = "amqp" 

đến tập tin cài đặt của tôi dường như để sửa chữa mọi thứ.

1

Tôi cũng gặp vấn đề tương tự ngay cả khi tôi thêm phần phụ trợ 'amqp'.

Dưới đây là cần tây tập tin cấu hình của tôi:

BROKER_HOST = "localhost" 
BROKER_PORT = 5672 
BROKER_USER = "guest" 
BROKER_PASSWORD = "guest" 
BROKER_VHOST = "/" 

CELERY_RESULT_BACKEND = "amqp" 
CELERY_AMQP_TASK_RESULT_EXPIRES = 18000 # 5 hours. 
CELERY_IMPORTS = ("test",) 

vỏ My nơi lần đầu tiên get là thời gian thành công nhất và thứ hai hung của nó. Sau một thời gian, nếu tôi gọi lại phương thức, nó sẽ hoạt động. Mẫu này lặp lại.

>>> r = test.add.delay(4, 4) 
>>> r.get() 
8 
>>> r = test.add.delay(4, 4) 
>>> r.get() 
^C <---------- it was hung here forever, I had to press ^C 

>>> r = test.add.delay(4, 4) 
>>> r.get() 
8 
Các vấn đề liên quan