从Airflow Worker获取库的当前git哈希
从Airflow Worker获取库的当前git哈希
我有一个名为mylib
的库,我想在运行Airflow Worker时通过PythonOperator
获得当前的git哈希值,以便进行日志记录。我知道几种方法可以获取最新的git哈希值,但主要问题是我不知道目录的位置,而且我可能会在目录之外运行它。
这些Worker本身可以各不相同(docker、ec2、gke、kubenetes),但源Python库mylib
总是通过pip install git+https://${GITHUB_TOKEN}@github.com/user/mylib.git@{version}
命令安装的。是否有一种通用的方法可以在任何Airflow Worker上获取mylib
的git哈希值,因为安装mylib
的目录会在我的Airflow Worker之间改变?
问题的出现原因:在Airflow Worker中,需要获取一个库的git哈希值。
解决方法:
1. 通过调用pip freeze
命令来获取库的git哈希值。
2. 在Python中调用命令并解析结果来获取哈希值。
具体步骤如下:
1. 在终端中使用pip install git+https://github.com/jkbr/httpie.git#egg=httpie
命令安装库。
2. 使用pip freeze | grep httpie
命令获取库的git哈希值。
3. 解析输出结果,可以得到类似于httpie @ git+https://github.com/jkbr/httpie.git
的字符串。
4. 在Python代码中使用subprocess.getoutput("pip freeze | grep <your package name>").split("@")[-1]
来获取哈希值。
以上就是从Airflow Worker中获取库的git哈希值的方法。
如果以上方法不能解决问题,请提供更多详细信息,以便进一步帮助。