Suche…


Sellerie-Konfiguration

SELLERIE

  1. Installation - pip install django-celery

  2. Hinzufügen

  3. Grundlegende Projektstruktur.

     - src/
       - bin/celery_worker_start # will be explained later on
       - logs/celery_worker.log
       - stack/__init __.py
       - stack/celery.py
       - stack/settings.py
       - stack/urls.py
       - manage.py
    
  4. Fügen celery.py Datei celery.py Ihrem stack/stack/ Ordner hinzu.

     from __future__ import absolute_import
     import os
     from celery import Celery
     os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'stack.settings')
     from django.conf import settings  # noqa
     app = Celery('stack')
     app.config_from_object('django.conf:settings')
     app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
    
  5. stack/stack/__init__.py Sie Ihrem stack/stack/__init__.py folgenden Code hinzu:

     from __future__ import absolute_import
     from .celery import app as celery_app  # noqa
    
  6. Erstellen Sie eine Aufgabe und markieren Sie sie beispielsweise als @shared_task()

     @shared_task()
     def add(x, y):
         print("x*y={}".format(x*y))
    
  7. Laufender Selleriearbeiter "von Hand":

    celery -A stack worker -l info wenn Sie auch hinzufügen möchten

Supervisor ausführen

  1. Erstellen Sie ein Skript, um den Sellerie-Arbeiter zu starten. Fügen Sie Ihr Skript in Ihre App ein. Zum Beispiel: stack/bin/celery_worker_start

     #!/bin/bash
     
     NAME="StackOverflow Project - celery_worker_start"
     
     PROJECT_DIR=/home/stackoverflow/apps/proj/proj/
     ENV_DIR=/home/stackoverflow/apps/proj/env/
     
     echo "Starting $NAME as `whoami`"
     
     # Activate the virtual environment
     cd "${PROJECT_DIR}"
     
     if [ -d "${ENV_DIR}" ]
     then
         . "${ENV_DIR}bin/activate"
     fi
     
     celery -A stack --loglevel='INFO'
    
  2. Fügen Sie dem neu erstellten Skript Ausführungsrechte hinzu:

    chmod u+x bin/celery_worker_start

  3. Supervisor installieren (diesen Test überspringen, wenn Supervisor bereits installiert ist)

    apt-get install supervisor

  4. Fügen Sie die Konfigurationsdatei für Ihren Supervisor hinzu, um Ihren Sellerie zu starten. /etc/supervisor/conf.d/stack_supervisor.conf es in /etc/supervisor/conf.d/stack_supervisor.conf

     [program:stack-celery-worker]
     command = /home/stackoverflow/apps/stack/src/bin/celery_worker_start
     user = polsha
     stdout_logfile = /home/stackoverflow/apps/stack/src/logs/celery_worker.log
     redirect_stderr = true
     environment = LANG = en_US.UTF-8,LC_ALL = en_US.UTF-8
     numprocs = 1
     autostart = true
     autorestart = true
     startsecs = 10
     stopwaitsecs = 600
     priority = 998
    
  5. Supervisor erneut lesen und aktualisieren

     sudo supervisorctl reread
         stack-celery-worker: available
     sudo supervisorctl update
         stack-celery-worker: added process group
    
  6. Grundlegende Befehle

     sudo supervisorctl status stack-celery-worker                       
         stack-celery-worker      RUNNING    pid 18020, uptime 0:00:50
     sudo supervisorctl stop stack-celery-worker  
         stack-celery-worker: stopped
     sudo supervisorctl start stack-celery-worker                        
         stack-celery-worker: started
     sudo supervisorctl restart stack-celery-worker 
         stack-celery-worker: stopped
         stack-celery-worker: started
    

Sellerie + KaninchenMQ mit Supervisor

Sellerie benötigt einen Broker, um das Weiterleiten von Nachrichten abzuwickeln. Wir verwenden RabbitMQ, weil es einfach einzurichten ist und gut unterstützt wird.

Installieren Sie rabbitmq mit dem folgenden Befehl

sudo apt-get install rabbitmq-server

Erstellen Sie nach Abschluss der Installation den Benutzer, fügen Sie einen virtuellen Host hinzu und legen Sie die Berechtigungen fest.

sudo rabbitmqctl add_user myuser mypassword
sudo rabbitmqctl add_vhost myvhost
sudo rabbitmqctl set_user_tags myuser mytag
sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"

So starten Sie den Server:

sudo rabbitmq-server

Wir können Sellerie mit Pip installieren:

pip install celery

In Ihrer Datei Django settings.py würde Ihre Broker-URL dann ungefähr so ​​aussehen

BROKER_URL = 'amqp://myuser:mypa[email protected]:5672/myvhost'

Starten Sie jetzt den Selleriearbeiter

celery -A your_app worker -l info

Mit diesem Befehl können Sie einen Celery-Mitarbeiter starten, um alle in Ihrer Django-App definierten Aufgaben auszuführen.

Supervisor ist ein Python-Programm, mit dem Sie Unix-Prozesse steuern und ausführen können. Es kann auch abgestürzte Prozesse neu starten. Wir verwenden es, um sicherzustellen, dass die Celery-Mitarbeiter immer laufen.

Installieren Sie zunächst den Supervisor

sudo apt-get install supervisor

Erstellen Sie Ihre_proj.conf-Datei in Ihrem Supervisor conf.d (/etc/supervisor/conf.d/your_proj.conf):

[program:your_proj_celery]
command=/home/your_user/your_proj/.venv/bin/celery --app=your_proj.celery:app worker -l info
directory=/home/your_user/your_proj
numprocs=1
stdout_logfile=/home/your_user/your_proj/logs/celery-worker.log
stderr_logfile=/home/your_user/your_proj/logs/low-worker.log
autostart=true
autorestart=true
startsecs=10

Nachdem unsere Konfigurationsdatei erstellt und gespeichert wurde, können wir Supervisor über den Befehl supervisorctl über unser neues Programm informieren. Zuerst weisen wir Supervisor an, nach neuen oder geänderten Programmkonfigurationen im Verzeichnis /etc/supervisor/conf.d zu suchen:

sudo supervisorctl reread

Anschließend mit dem Hinweis, dass Änderungen vorgenommen werden sollen, mit:

sudo supervisorctl update

Sobald unsere Programme ausgeführt werden, wird es zweifellos eine Zeit geben, zu der wir den Status stoppen, neu starten oder sehen möchten.

sudo supervisorctl status

Um Ihre Sellerie-Instanz neu zu starten:

sudo supervisorctl restart your_proj_celery


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow