气流回填命令 FERNET_KEY 配置丢失

时间:2021-02-26 18:25:42

标签: airflow

在回填时遇到问题。当我在命令行中运行这个

GroupJoin

dag 被触发并开始运行。第一个任务(一个没有外部依赖的简单 python 脚本)完成,但在第二个任务中,我收到关于 fernet 密钥的错误。 dag 只是调用 MsSqlOperator。

LEFT OUTTER JOIN
  1. 如果我在 UI 中手动触发 dag,所有步骤都会成功。
  2. 如果我在 CLI 的 dag 中触发一次执行,则 dag 会成功。
    • var data = GenerateFileDTOSampleData().ToList(); var r = data.Skip(1).Aggregate(data.FirstOrDefault(), ReduceGroupJoinedFileDTOs); List<FileDTO> ReduceGroupJoinedFileDTOs(List<FileDTO> last, IEnumerable<FileDTO> next) { return last.GroupJoin(next, (outter) => outter.ID, (inner) => inner.ID, (outter, joined) => new FileDTO { ID = outter.ID, Name = joined.FirstOrDefault(HasName)?.Name, Sports = joined.FirstOrDefault(HasSports)?.Sports ?? default, Country = joined.FirstOrDefault(HasCountry)?.Country ?? default }).ToList(); }
  3. fernet 密钥在配置文件中,我们已经运行了 resetdb 并重新创建了连接。存在同样的问题,回填命令不起作用,但其他方法起作用。
  4. 还尝试使用 airflow backfill my_dag -s 2021-01-01 -e 2021-01-12 标志(不确定这是做什么的),但它也不起作用。

有什么解决问题的想法吗?

使用 LocalExecutor 在本地运行 Airflow 1.10.14。编辑:使用 .15 时也存在问题。

Backfill Doc for Airflow 1.10.14

日志:

  • 注意,它说明了一些关于变量缺失的内容,但这是误导,因为如果我从 UI 手动运行它,它会起作用。关键是

    cryptography.fernet.InvalidToken
    

完整日志:

airflow dags trigger -e '2021-01-19T04:00:00' my_dag

1 个答案:

答案 0 :(得分:0)

您是否尝试过生成新的 FERNET_KEY 并将其设置为 env 变量(这样您将覆盖 airflow.cfg 文件中的值):

export AIRFLOW__CORE__FERNET_KEY=your_fernet_key

生成新的代码是:

from cryptography.fernet import Fernet
fernet_key= Fernet.generate_key()
print(fernet_key.decode())

别忘了安装前包https://pypi.org/project/cryptography/ (pip install cryptography)