我在Apache Airflow中具有以下功能:
from airflow.utils.email import send_email
send_email(to=['a@mail.com','b@mail.com'],
subject=....)
这很好用。
现在,我不想对电子邮件列表进行硬编码,因此我将其另存为用户可以从其UI更改的可配置字段。 documentation
所以我将代码更改为:
NOTIFY_LIST = Variable.get("a_emails")
send_email([NOTIFY_LIST],
subject=....)
但这不起作用。
当我这样做时:
logging.info(NOTIFY_LIST)
logging.info([NOTIFY_LIST])
logging.info(NOTIFY_LIST.split(','))
我知道:
'a@mail.com', 'b@mail.com'
[u"'a@mail.com', 'b@mail.com'"]
[u"'a@mail.com'", u" 'b@mail.com'"]
所以我的问题是:
['a@mail.com','b@mail.com']
和
[NOTIFY_LIST]
不一样。
我该如何解决?我尝试了所有可以想到的转换。
答案 0 :(得分:1)
建议尝试以下方法;
logging.info(NOTIFY_LIST.replace("'", "").split(','))
这里的问题是列表中的元素包含引号。
答案 1 :(得分:0)
如果字符串中间有一个 ',另一个答案将失败,我将使用 str.strip
来解决这个问题:
logging.info([s.strip("' ") for s in NOTIFY_LIST.split(',')])