我正在Cloud Composer上开发DAG;我的代码分成一个主python文件和一个带有子文件夹的包,看起来像这样:
my_dag1.py
package1/__init__.py
package1/functions.py
package1/package2/__init__.py
package1/package2/more_functions.py
我更新了package1/functions.py
上的一个函数以使用附加参数(并更新了my_dag1.py
中的引用)。该代码将在我的本地环境上正确运行,并且在运行时没有出现任何错误
gcloud beta composer environments run my-airflow-environment list_dags --location europe-west1
但是Web UI引发了python错误
TypeError:my_function()获得了意外的关键字参数 'new_argument'
我尝试重命名该函数,并且错误更改为
NameError: name 'my_function' is not defined
我尝试更改DAG的名称,并将文件上传到压缩和解压缩的dag文件夹中,但是没有任何效果。
仅在重命名软件包文件夹后,错误消失了。
我怀疑问题与调度程序启动my_dag1.py
而不是package1/functions.py
有关。由于我在前几周进行了类似的更新,因此错误无处不在。
关于在不重构整个代码结构的情况下如何解决此问题的任何想法?
EDIT-1
Here's the link到Google网上论坛的相关讨论
答案 0 :(得分:0)
我遇到了类似的问题。 Web UI中不会消除“ Broken DAG”错误。我猜这是AirFlow的Web服务器中的缓存错误。
背景。
Broken DAG
错误,表明它找不到定制的运算符。为什么我认为这是Web服务器气流中的错误?
airflow test
手动运行DAG,因此导入应该正确。/dags/
文件夹中删除了相关的DAG文件,错误仍然存在。这是我为解决此问题所做的事情。
希望它可以帮助遇到相同问题的人。
答案 1 :(得分:0)
尝试重新启动网络服务器:
gcloud beta composer environments restart-web-server ENVIRONMENT_NAME --location=LOCATION