运行时警告:您正在以超级用户权限运行工作程序:绝对不推荐这样做 [英] RuntimeWarning:You're running the worker with superuser privileges:this is absolutely not recommended
问题描述
我在本地使用 django+celery+redis,celery==4.4.0 它工作正常,但是当我对它进行 dockerizing 时,出现上述错误.
I am using django+celery+redis,celery==4.4.0 in local it is working fine but when I am dockerizing it , I am getting the above error.
我使用以下命令在本地和容器内运行
I am using following commands to run in local as well as inside container
**CMDs**
celery -A nrn worker -l info
docker run -d -p 6379:6379 redis
flower -A nrn --port=5555
非常感谢任何帮助
*settings.py**
*settings.py**
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_BROKER_URL = os.environ.get('redis', 'redis://127.0.0.1:6379/')
推荐答案
查看 文档.不过,这是一个警告,而不是错误(请参阅 代码一>).仅当您允许默认情况下未启用的 pickle 序列化时,在 root 下运行 Celery 才会出错(请参阅 这里).
Take a look in the documentation. It's a warning, though, not an error (see the code). Running Celery under root is an error only when you allow pickle serialization which is not enabled by default (see here).
然而,以较低的权限运行 Celery 仍然是最佳做法.在 Docker(使用基于 Debian 的映像)中,我选择在 nobody
:nogroup
下运行 Celery.我使用这个 Dockerfile
:
However, it's still the best practice to run Celery with lower privileges. In Docker (with Debian based image), I choose to run Celery under nobody
:nogroup
. I use this 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
如下所示:
#!/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/worker-example@%h.state \
--hostname=worker-example@%h \
--queues=celery.example -O fair \
--uid=nobody --gid=nogroup
这篇关于运行时警告:您正在以超级用户权限运行工作程序:绝对不推荐这样做的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!