Redis
 sql >> Datenbank >  >> NoSQL >> Redis

RuntimeWarning:Sie führen den Worker mit Superuser-Rechten aus:Dies wird absolut nicht empfohlen

Schau mal in die Dokumentation. Es ist jedoch eine Warnung, kein Fehler (siehe Code). Das Ausführen von Celery unter root ist nur dann ein Fehler, wenn Sie die Pickle-Serialisierung zulassen, die standardmäßig nicht aktiviert ist (siehe hier).

Es ist jedoch immer noch die beste Methode, Celery mit geringeren Berechtigungen auszuführen. In Docker (mit Debian-basiertem Image) wähle ich Celery unter nobody auszuführen :nogroup . Ich verwende dieses 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"]

wobei celery.sh sieht wie folgt aus:

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