2010-07-23 16 views
12

Tôi đã xây dựng một ứng dụng web Django và một số dịch vụ Django-Piston. Sử dụng giao diện web người dùng gửi một số dữ liệu được đăng lên dịch vụ web và dịch vụ web đó sử dụng Django-cần tây để bắt đầu tác vụ nền.Chạy Django-Celery trong Sản xuất

Mọi thứ hoạt động tốt trong môi trường phát triển bằng cách sử dụng manage.py. Bây giờ tôi đang cố gắng di chuyển này để sản xuất trên một máy chủ apache thích hợp. Các ứng dụng web và các dịch vụ web hoạt động tốt trong sản xuất nhưng tôi có các vấn đề nghiêm trọng bắt đầu từ celeryd như một daemon. Dựa trên các hướng dẫn sau: http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#running-the-worker-as-a-daemon Tôi đã tạo một tệp celeryconfig.py và đặt nó trong thư mục/usr/bin (đây là nơi celeryd là vị trí trên máy chủ Linux của tôi).

CELERYD_CHDIR="/srv/http/ControllerFramework/" 
DJANGO_SETTINGS_MODULE="settings" 
CELERYD="/srv/http/ControllerFramework/manage.py celeryd" 

Tuy nhiên khi tôi cố gắng để bắt đầu celeryd từ dòng lệnh tôi nhận được lỗi sau:

"Missing connection string! Do you have " 
celery.exceptions.ImproperlyConfigured: Missing connection string! Do you have CELERY_RESULT_DBURI set to a real value? 

Không chắc chắn nơi để đi từ đây. Dưới đây là phần settings.py của tôi vì nó liên quan đến vấn đề này:

BROKER_HOST = "localhost" 
BROKER_PORT = 5672 
BROKER_USER = "controllerFramework" 
BROKER_PASSWORD = "******" 
BROKER_VHOST = "localhost" 
+0

'CELERY_RESULT_DBURI' có thực sự được đặt ở đâu đó không? –

+0

tôi đã cố gắng thiết lập giá trị như sau: CELERY_RESULT_BACKEND = 'AMQP' Nhưng tôi nhận được một lỗi khi tôi cố gắng chạy celeryd: [2010/07/23 12: 46: 13.138: CẢNH BÁO/MainProcess] nâng cao KeyError ("Thiếu tên máy chủ cho kết nối AMQP.") [2010-07-23 12: 46: 13,138: CẢNH BÁO/MainProcess] KeyError [2010-07-23 12: 46: 13,138: CẢNH BÁO/MainProcess]: [2010 -07-23 12: 46: 13,139: CẢNH BÁO/MainProcess] 'Thiếu tên máy chủ cho kết nối AMQP.' Vì tôi gặp lỗi này và tôi không thể tìm thấy bất kỳ nơi nào trong tài liệu cho django-celery rằng giá trị này cần được đặt, tôi giả định rằng tôi đã làm điều gì đó sai, một lần nữa. – Przemek

+0

Tôi sẽ đoán rằng có thể khi chạy trong sản xuất, các cài đặt được cho là nằm trong celeryconfig.py? và không phải trong settings.py. Trong trường hợp đó, có phải tệp tin celeryconfig.py được thêm vào không? – Przemek

Trả lời

8

Vì vậy, tôi đã kết thúc cuộc trò chuyện với lãnh đạo dự án về django-cần tây. Đôi điều. Trước hết cần tây phải được chạy bằng cách sử dụng 'manage.py celeryd'. Thứ hai, trong tập tin settings.py bạn phải 'nhập khẩu djcelery' Vấn đề này có thể được khắc phục trong phiên bản tiếp theo nhưng bây giờ bạn phải làm điều này.