2012-10-10 35 views
9

Tôi đang chạy một công nhân cần tây như thế này:Chạy một công nhân cần tây trong nền

celery worker --app=portalmq --logfile=/tmp/portalmq.log --loglevel=INFO -E --pidfile=/tmp/portalmq.pid 

Bây giờ tôi muốn chạy công nhân này trong nền. Tôi đã thử một số điều, bao gồm:

nohup celery worker --app=portalmq --logfile=/tmp/portal_mq.log --loglevel=INFO -E --pidfile=/tmp/portal_mq.pid >> /tmp/portal_mq.log 2>&1 </dev/null & 

Nhưng nó không hoạt động. Tôi đã kiểm tra các tài liệu cần tây, và tôi thấy điều này:

Đặc biệt nhận xét này là có liên quan:

In production you will want to run the worker in the background as a daemon. 
To do this you need to use the tools provided by your platform, or something 
like supervisord (see Running the worker as a daemon for more information). 

này là quá nhiều chi phí chỉ để chạy một quá trình trong nền. Tôi sẽ cần phải cài đặt giám sát trong các máy chủ của tôi, và làm quen với nó. Không đi vào lúc này. Có đơn giản cách điều hành công nhân cần tây trong backrground không?

+0

làm bạn cần một cái gì đó nhiều hơn thế? công nhân cần tây --app = portalmq --logfile =/tmp/portalmq.log --loglevel = INFO -E --pidfile =/tmp/portalmq.pid & –

+0

Như tôi đã nói, điều đó không hiệu quả. Người lao động chỉ dừng lại sau khi khởi tạo. – dangonfast

+0

và làm việc cho tôi mà không cần nohup. btw bạn cũng có thể chạy công nhân trong một màn hình tách rời. Tôi vẫn nghĩ rằng bạn có thể cấu hình người giám sát trong thời gian ngắn hơn (và có được một triển khai tốt cho cần tây) –

Trả lời

16

người giám sát thực sự đơn giản và yêu cầu ít công việc để thiết lập nó, cùng áp dụng cho cần tây kết hợp với người giám sát.

Nó không nên mất hơn 10 phút để thiết lập nó lên :)

  1. cài đặt supervisord với apt-get

  2. tạo /etc/supervisor/conf.d/celery.conf cấu hình nộp

  3. dán somethis trong file celery.conf

    [program:celery] 
    directory = /my_project/ 
    command = /usr/bin/python manage.py celery worker 
    
  4. cộng (nếu bạn cần) một số nội dung không bắt buộc và hữu ích (với giá trị giả)

    user = celery_user 
    group = celery_group 
    stdout_logfile = /var/log/celeryd.log 
    stderr_logfile = /var/log/celeryd.err 
    autostart = true 
    environment=PATH="/some/path/",FOO="bar" 
    
  5. restart giám sát (hoặc làm supervisorctl đọc lại; supervisorctl thêm cần tây)

sau đó bạn nhận được các ctl đẹp lệnh để quản lý quá trình cần tây:

supervisorctl start/restart/stop celery 

supervisorctl tail [-f] celery [stderr] 
+0

Cảm ơn. Tôi sẽ cố gắng càng sớm càng tốt. – dangonfast

+0

@Tommaso Chúng ta giả sử viết gì trong "directory =/my_project /"? – Simer

+0

@simer đường dẫn của dự án Django của bạn (lệnh dự kiến ​​sẽ có manage.py trong đường dẫn) –

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