解决不能用root用户启动Celery Worker的问题

一、报错演示

(venv) [root@localhost celery_tasks]# celery -A tasks worker -l info
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
(venv) [root@localhost celery_tasks]# 

翻译一下

当worker接受用pickle序列化的消息时,以超级用户权限运行worker是一个非常糟糕的主意!

如果您确实要继续,则必须设置C_FORCE_ROOT
环境变量(但请在使用前先考虑一下)。

用户信息:uid = 0 euid = 0 gid = 0 egid = 0

二、问题解决

  1. 方法一:暂时解决问题
    在服务器输入以下命令

    export C_FORCE_ROOT="true"
    
  2. 方法二:永久解决问题

    from celery import Celery,platforms #导入platforms
    app = Celery('celery_tasks.tasks', broker='redis://127.0.0.1:6379/1')
    platforms.C_FORCE_ROOT = True #加上这一行
    @app.task
    def test():
    	pass
    
欢迎关注同名微信公众号:程序猿杂记

程序猿杂记

技术|交流|福利
发布了63 篇原创文章 · 获赞 87 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44110998/article/details/103495184