Ubuntu系统部署Celery守护进程启动失败问题求助
问题根源
systemd运行服务时使用独立的运行环境,不会继承你在当前登录shell中导出的LC_ALL、LANG变量,因此即使你手动在终端执行过导出命令,服务启动时依然读取不到对应编码配置,触发Click的编码校验报错。而你手动执行启动命令正常,是因为当前shell会话已经加载了你配置的编码变量。
解决方案
任选以下一种方式配置即可:
方案1:在celery服务配置文件中添加环境变量
编辑/etc/systemd/system/celery.service,在[Service]段中添加两行编码配置:
[Service] # 原有配置保持不变,新增以下两行 Environment=LC_ALL=C.UTF-8 Environment=LANG=C.UTF-8
修改完成后执行命令生效:
sudo systemctl daemon-reload sudo systemctl restart celery.service
方案2:在celery环境变量文件中添加配置
你已经在服务中配置了加载/etc/default/celeryd作为环境变量文件,直接在该文件末尾添加两行配置即可:
LC_ALL=C.UTF-8 LANG=C.UTF-8
修改完成后执行命令生效:
sudo systemctl daemon-reload sudo systemctl restart celery.service
验证
执行sudo systemctl status celery.service查看服务状态,正常配置后会显示active (running)。
内容的提问来源于stack exchange,提问作者Stack
相关产品推荐
相关产品推荐

