运行时警告:您正在以超级用户权限运行工作程序:绝对不推荐这样做 [英] RuntimeWarning:You're running the worker with superuser privileges:this is absolutely not recommended

查看:106
本文介绍了运行时警告:您正在以超级用户权限运行工作程序:绝对不推荐这样做的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在本地使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆