Производственная установка для сельдерея

Как я могу настроить Celery на производственном сервере, используя aws или digitalocean и брокер как redis или rabbitmq.

Пожалуйста, расскажите подробнее о том, как мы можем обеспечить отказоустойчивость соединения, когда посредник не работает.

2 ответа

Вы можете попробовать это прекрасное приложение после установки Python в oceandigital.

использовать сельдерей в Oceandigital

Для тех, кто еще не нашел ответа.

  • В AWS вы можете использовать elasticache(Redis), подключить этот Redis-кластер к вашему экземпляру EC2 и получить основную конечную точку вашего кластера с панели управления .
  • Теперь войдите в свой ec2 с помощью ключей SSH (используйте putty или mobaXterm).
  • Теперь установите Redis на свой сервер (что бы вы ни использовали)
  • После установки:
  • тип redis-server он должен выводить нормально
  • Затем введите redis-cli -h <your redis cluster endpoint(assuming default port 6379)
  • Теперь проверьте это PING он должен напечатать PONG

Теперь часть redis выполнена для Celery, учитывая, что вы используете django

  • Перейти к этому /etc/supervisor/conf.d/ каталог на вашем сервере

  • Создайте файл celery.conf (вы можете называть его как хотите) и введите его

            ;  celery worker supervisor example
    ; ==================================
    
    ; the name of your supervisord program
    [program:myprojectcelery]
    
    ; Set full path to celery program if using virtualenv
    command=/home/ubuntu/.virtualenvs/myproject/bin/celery worker -A picha --loglevel=INFO
    
    ; The directory to your Django project
    directory=/home/ubuntu/myproject
    
    ; If supervisord is run as the root user, switch users to this UNIX user account
    ; before doing any processing.
    user=ubuntu(use your root user)
    
    ; Supervisor will start as many instances of this program as named by numprocs
    numprocs=1
    
    ; Put process stdout output in this file
    stdout_logfile=/var/log/celery/whatever_worker.log
    
    ; Put process stderr output in this file
    stderr_logfile=/var/log/celery/whatever_worker.log
    
    ; If true, this program will start automatically when supervisord is started
    autostart=true
    
    ; May be one of false, unexpected, or true. If false, the process will never
    ; be autorestarted. If unexpected, the process will be restart when the program
    ; exits with an exit code that is not one of the exit codes associated with this
    ; process’ configuration (see exitcodes). If true, the process will be
    ; unconditionally restarted when it exits, without regard to its exit code.
    autorestart=true
    
    ; The total number of seconds which the program needs to stay running after
    ; a startup to consider the start successful.
    startsecs=10
    
    ; Need to wait for currently executing tasks to finish at shutdown.
    ; Increase this if you have very long running tasks.
    stopwaitsecs = 600
    
    ; When resorting to send SIGKILL to the program to terminate it
    ; send SIGKILL to its whole process group instead,
    ; taking care of its children as well.
    killasgroup=true
    
    ; if your broker is supervised, set its priority higher
    ; so it starts first
    priority=998
    
    
  • создайте еще один файл celerybeat.conf и введите

            ;  celery beat supervisor example
    ; ================================
    
    ; the name of your supervisord program
    [program:celerybeat]
    
    ; Set full path to celery program if using virtualenv
    command=/home/ubuntu/.virtualenvs/myproject/bin/celerybeat -A picha --loglevel=INFO
    
    ; The directory to your Django project
    directory=/home/ubuntu/myproject
    
    ; If supervisord is run as the root user, switch users to this UNIX user account
    ; before doing any processing.
    user=mosh
    
    ; Supervisor will start as many instances of this program as named by numprocs
    numprocs=1
    
    ; Put process stdout output in this file
    stdout_logfile=/var/log/celery/whatever_beat.log
    
    ; Put process stderr output in this file
    stderr_logfile=/var/log/celery/whatever_beat.log
    
    ; If true, this program will start automatically when supervisord is started
    autostart=true
    
    ; May be one of false, unexpected, or true. If false, the process will never
    ; be autorestarted. If unexpected, the process will be restart when the program
    ; exits with an exit code that is not one of the exit codes associated with this
    ; process’ configuration (see exitcodes). If true, the process will be
    ; unconditionally restarted when it exits, without regard to its exit code.
    autorestart=true
    
    ; The total number of seconds which the program needs to stay running after
    ; a startup to consider the start successful.
    startsecs=10
    
    ; if your broker is supervised, set its priority higher
    ; so it starts first
    priority=999
    
    
  • создать файлы журнала, упомянутые в приведенном выше коде

            $ sudo touch /var/log/celery/whatever_beat.log
    
  • Теперь сообщите своему руководителю об этом файле

            $ sudo supervisorctl update
    
    
  • Теперь используйте эти команды соответственно

            $ sudo supervisorctl start myprojectcelery
    $ sudo supervisorctl status myprojectcelery
    
    

Обратитесь к официальной документации для получения дополнительной информации

Другие вопросы по тегам