Redis
 sql >> Base de données >  >> NoSQL >> Redis

RuntimeWarning :vous exécutez le worker avec des privilèges de superutilisateur :ce n'est absolument pas recommandé

Jetez un oeil dans la documentation. C'est un avertissement, cependant, pas une erreur (voir le code). L'exécution de Celery sous root est une erreur uniquement lorsque vous autorisez la sérialisation de pickle qui n'est pas activée par défaut (voir ici).

Cependant, il est toujours préférable d'exécuter Celery avec des privilèges inférieurs. Dans Docker (avec une image basée sur Debian), je choisis d'exécuter Celery sous nobody :nogroup . J'utilise ce Dockerfile :

FROM python:3.6

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /srv/celery

COPY ./app app
COPY ./requirements.txt /tmp/requirements.txt
COPY ./celery.sh celery.sh

RUN pip install --no-cache-dir \
    -r /tmp/requirements.txt

VOLUME ["/var/log/celery", "/var/run/celery"]

CMD ["./celery.sh"]

celery.sh se présente comme suit :

#!/usr/bin/env bash

mkdir -p /var/run/celery /var/log/celery
chown -R nobody:nogroup /var/run/celery /var/log/celery

exec celery --app=app worker \
            --loglevel=INFO --logfile=/var/log/celery/worker-example.log \
            --statedb=/var/run/celery/[email protected]%h.state \
            [email protected]%h \
            --queues=celery.example -O fair \
            --uid=nobody --gid=nogroup