sql >> Base de Datos >  >> NoSQL >> Redis

Advertencia de tiempo de ejecución:está ejecutando el trabajador con privilegios de superusuario:esto no se recomienda en absoluto

Echa un vistazo a la documentación. Sin embargo, es una advertencia, no un error (ver el código). Ejecutar Celery bajo la raíz es un error solo cuando permite la serialización de pickle que no está habilitada de forma predeterminada (consulte aquí).

Sin embargo, sigue siendo la mejor práctica ejecutar Celery con privilegios más bajos. En Docker (con una imagen basada en Debian), elijo ejecutar Celery bajo nobody :nogroup . Yo uso este 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"]

donde celery.sh tiene el siguiente aspecto:

#!/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