Tôi chỉ mới bắt đầu sử dụng django-celery và tôi muốn đặt celeryd hoạt động như một daemon. Tuy nhiên, instructions xuất hiện để gợi ý rằng nó chỉ có thể được định cấu hình cho một trang web/dự án tại một thời điểm. Cây cần tây có thể xử lý nhiều hơn một dự án hay chỉ có thể xử lý một dự án? Và, nếu đây là trường hợp, có cách nào tốt để thiết lập celeryd được tự động bắt đầu cho mỗi cấu hình, điều này đòi hỏi tôi phải tạo một init script riêng cho mỗi cấu hình không?Sử dụng cần tây làm daemon với nhiều ứng dụng django?
Trả lời
Giống như tất cả các câu hỏi thú vị, câu trả lời là tùy thuộc vào. :)
Nó chắc chắn có thể đưa ra một kịch bản trong đó celeryd có thể được sử dụng bởi hai trang web độc lập. Nếu nhiều trang web gửi các tác vụ đến cùng một trao đổi và các tác vụ không yêu cầu quyền truy cập vào bất kỳ cơ sở dữ liệu cụ thể nào - giả sử chúng hoạt động trên địa chỉ email hoặc số thẻ tín dụng hoặc thứ gì đó không phải là bản ghi cơ sở dữ liệu đầy đủ. Chỉ cần đảm bảo rằng mã tác vụ nằm trong một mô-đun được chia sẻ được tải bởi tất cả các trang web và máy chủ cần tây.
Thông thường, bạn sẽ thấy cần tây truy cập vào cơ sở dữ liệu - nó tải các đối tượng dựa trên ID được chuyển thành tham số nhiệm vụ hoặc phải viết một số thay đổi cho cơ sở dữ liệu, hoặc, thường xuyên nhất, cả hai. Và nhiều trang web/dự án thường không chia sẻ cơ sở dữ liệu, ngay cả khi chúng chia sẻ cùng một ứng dụng, vì vậy bạn sẽ cần phải giữ hàng đợi nhiệm vụ riêng biệt.
Trong trường hợp đó, điều thường xảy ra là bạn thiết lập một nhà môi giới thư (ví dụ: RabbitMQ) với nhiều trao đổi. Mỗi trao đổi nhận được tin nhắn từ một trang web duy nhất. Sau đó, bạn chạy một hoặc nhiều quy trình celeryd ở đâu đó cho mỗi trao đổi (trong cài đặt cấu hình cần tây, bạn phải chỉ định trao đổi. Tôi không tin rằng celeryd có thể nghe nhiều trao đổi). Mỗi máy chủ celeryd biết trao đổi của nó, các ứng dụng cần tải và cơ sở dữ liệu cần kết nối.
Để quản lý các vấn đề này, tôi khuyên bạn nên xem xét cyme - Đó là bởi @asksol và quản lý nhiều phiên bản celeryd, trên nhiều máy chủ nếu cần. Tôi đã không cố gắng, nhưng có vẻ như nó sẽ xử lý các cấu hình khác nhau cho các trường hợp khác nhau.
Chưa thử nhưng sử dụng cần tây 3.1.x mà không cần django-cần tây, theo các tài liệu bạn có thể nhanh chóng một ứng dụng cần tây như thế này:
app1 = Celery('app1')
app1.config_from_object('django.conf:settings')
app1.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
Nhưng bạn có thể sử dụng cần tây đa cho tung ra một vài công nhân có cấu hình đơn lẻ, bạn có thể xem ví dụ here. Vì vậy, bạn có thể khởi động một số công nhân với nhau --app appx thông số vì vậy nó sẽ sử dụng taks và các thiết lập khác nhau:
# 3 workers: Two with 3 processes, and one with 10 processes.
$ celery multi start 3 -c 3 -c:1 10
celery worker -n [email protected] -c 10 --config celery1.py --app app1
celery worker -n [email protected] -c 3 --config celery2.py --app app2
celery worker -n [email protected] -c 3 --config celery3.py --app app3
- 1. cần tây với nhiều phiên bản django
- 2. Django Cần tây ứng dụng - Không mô-đun tên lỗi cần tây
- 3. Cần tây với Django - triển khai
- 4. Bình Flask với cần tây trong bối cảnh ứng dụng
- 5. Thử nghiệm đơn vị với django-cần tây?
- 6. Cần tây so với djcelery
- 7. Sách cho Django + Cần tây + ThỏMQ?
- 8. Django-Cần tây thanh tiến trình
- 9. Làm thế nào để viết một công việc Upstart Ubuntu cho cần tây (django-cần tây) trong một virtualenv
- 10. Có thể sử dụng cần tây với ngôn ngữ lập trình khác không?
- 11. Cần tây không kết nối với Redis Broker (Django)
- 12. Làm rõ trường hợp sử dụng cho Hadoop so với RabbitMQ + Cần tây
- 13. Cần tây tích hợp cần tây
- 14. Làm thế nào để sử dụng Supervisor + Django + Celery với nhiều hàng đợi và công nhân?
- 15. Nhiệm vụ cần tây eta tắt, sử dụng rabbitmq
- 16. cần tây-django không thể tìm thấy cài đặt
- 17. nhiều ứng dụng django với nginx proxy_pass và viết lại
- 18. Cần tây Tắt
- 19. sử dụng các phương pháp lớp học làm nhiệm vụ cần tây
- 20. django-cần tây trong môi trường sản xuất nhiều máy chủ
- 21. django cần tây chấm dứt subprocesses nhiệm vụ của
- 22. Chạy ứng dụng Java console làm daemon (nền)
- 23. làm sạch nhiệm vụ cần tây với DB phụ trợ
- 24. SQS với cấu hình cần tây
- 25. Làm thế nào để lập trình tạo ra các mục cần thiết với cần tây và Django
- 26. Tạo ứng dụng Django di động - trợ giúp cần thiết
- 27. công tác nhà nước và django-cần tây
- 28. cảnh báo django-cần tây về cài đặt.DEBUG
- 29. Làm thế nào để làm cho cần tây thử lại bằng cách sử dụng cùng một công nhân?
- 30. Việc cần làm với tệp pyc khi Django hoặc python được sử dụng với Mercurial?