airflow:配置文件密码包含‘@#’等特殊符号问题

这段时间帮别的地区部署了一个简单的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,发现成功了,无异常信息,问题解决

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容