以root身份运行Celery

22

我需要用root身份运行Django和Celery,因为要获取访问权限。它说我需要设置C_FORCE_ROOT环境变量。我该在哪里设置这个环境变量?


据我所知,只有在使用默认序列化格式“pickle”时才需要这样做。 - Dineshs91
3个回答

45

您可以像这样将其设置为 true:

# export C_FORCE_ROOT="true"

然后确保将其设置为环境变量

# echo $C_FORCE_ROOT
true

但一定要将其永久化,否则它将在下次重启时消失。

玩得开心 :) !!


即使将变量设置为“true”并打印进行验证,运行后的输出仍然是以下内容:“当worker接受使用pickle序列化的消息时以超级用户特权运行worker是一个非常糟糕的想法!如果您真的想继续,请设置C_FORCE_ROOT环境变量(但在这样做之前请考虑一下)。用户信息:uid = 0 euid = 0 gid = 0 egid = 0”。 - nate

19

第一种解决方案 - 在终端手动输入命令

$ export C_FORCE_ROOT='true'

第二种解决方案 - 编辑Shell配置

$ vi ~/.bashrc

    # add following line
    export C_FORCE_ROOT='true'

$ source ~/.bashrc

第三种解决方案 - 编辑 Django 的 manage.py

import os 

if __name__ == '__main__':
    os.environ.setdefault('C_FORCE_ROOT', 'true')
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{PATH TO SETTINGS FILE}')

    execute_from_command_line(sys.argv)

2
任何地方都可以,只要使用 os.environ 让python进程捕捉到它。
如果您的问题是关于环境变量如何工作的,请阅读这个教程

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接