当我使用 sudo 运行芹菜工人时,出现以下错误:
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
我的C_FORCE_ROOT环境变量也是真的:
echo $C_FORCE_ROOT
true
更多信息:
Python --> 2.7.6
芹菜 --> 3.1.23 (芹菜)
操作系统 --> Linux(Ubuntu 14.04)
我应该如何用须藤跑芹菜?我知道这不安全,但由于某些原因,我真的需要这样做!
好的,我找到了解决方案!
在 celery 3.1 及更高版本中,使用泡菜序列化的工作人员将崩溃,如文档中所述:
如果以启用泡菜的 root 用户身份运行,工作线程现在将崩溃。
因此,要使用 sudo,您需要在芹菜配置中禁用泡菜序列化。我通过使用 json 做到了:
app.conf.update(
CELERY_ACCEPT_CONTENT = ['json'],
CELERY_TASK_SERIALIZER = 'json',
CELERY_RESULT_SERIALIZER = 'json',
)
然后如果你使用 sudo 运行,它会起作用!