【发布时间】:2013-12-19 06:09:08
【问题描述】:
出于访问原因,我需要以 root 身份运行我的 Django 和 Celery。它说我需要设置 C_FORCE_ROOT 环境变量。如何/在哪里设置环境变量?
【问题讨论】:
-
据我所知,只有在使用默认序列化格式
pickle时才需要这样做。
出于访问原因,我需要以 root 身份运行我的 Django 和 Celery。它说我需要设置 C_FORCE_ROOT 环境变量。如何/在哪里设置环境变量?
【问题讨论】:
pickle时才需要这样做。
您可以像这样将其设置为 true:
# export C_FORCE_ROOT="true"
然后确保将其设置为环境。变量
# echo $C_FORCE_ROOT
true
但请确保将其设为永久,因为这将在下次重启时消失
玩得开心:) !!
【讨论】:
Running a worker with superuser privileges when the worker accepts messages serialized with pickle is a very bad idea! If you really want to continue then you have to set the C_FORCE_ROOT environment variable (but please think about this before you do). User information: uid=0 euid=0 gid=0 egid=0
第一种解决方案 - 在终端手动输入命令
$ 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)
【讨论】:
任何地方,以便 python 进程使用 os.environ 获取它。
如果您的问题是关于环境变量的工作原理,请阅读this tutorial。
【讨论】: