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