这段时间帮别的地区部署了一个简单的airflow环境,由两台机器组成,其中元数据库选用的mysql,中间件使用的是redis;
部署完成进行测试的时候发现worker进程异常,查看日志如下
原因是因为airflow.cfg配置文件中redis的配置方式如下
## 使用的执行器
executor= CeleryExecutor
## 设置消息的中间代理
broker_url= redis://redis:abc@2021#123@111.11.111.101:6379/1
因为我的redis密码中包含'@',所以导致无法识别正确的ip地址
解决方式:将密码转换url编码,这边推荐两种方式
第一种:
使用python命令输出
进入python3
from urllib import parse
# 在连接前将特殊的密码转码再链接即可
password = parse.quote_plus('abc@2021#123')
print(password)
然后即可得到结果
或者直接在网页上找到urlEncode转换直接转换即可
编码转换之后之后我们用转换后得编码替换掉之前的密码即可
重新启动worker 查看日志发现
backports.configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: u'%402021%23@xxx.xx.xxx.xx:6379/6'
这是我们在所有的%前面都再添加一个%进行转译即可,变更为:abc%%402021%%23123
修改配置文件然后重启woker,发现成功了,无异常信息,问题解决