Производственная установка для сельдерея
Как я могу настроить Celery на производственном сервере, используя aws или digitalocean и брокер как redis или rabbitmq.
Пожалуйста, расскажите подробнее о том, как мы можем обеспечить отказоустойчивость соединения, когда посредник не работает.
2 ответа
Вы можете попробовать это прекрасное приложение после установки Python в 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
Обратитесь к официальной документации для получения дополнительной информации