我们使用 Neo4j 并从 Airflow 任务中调用它的查询。问题是当任务在 Airflow GUI 中标记为“失败”或“完成”时,这些查询通常不会停止。所以,我想找到一种方法,当任务被标记为“失败”或“完成”时,如何从当前正在运行的任务中调用终止查询。
在 Airflow 中,使用GraphDatabase.driver中的session.run(query)方法执行查询。其中GraphDatabase是 neo4j python 库的一部分
有什么简单的解决方案吗?
Base Operator 具有您可以覆盖的“on_kill”方法:https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/models/baseoperator/index.html#airflow.models.baseoperator.BaseOperator。 on_kill
您使用的运算符 (Neo4j) 可能没有正确实现 - 但您始终可以创建一个具有正确 on_kill 实现的自定义运算符,并可能将其作为 PR 贡献回来
如果您知道查询 ID,可以尝试运行以下查询,
CALL dbms.killQuery(queryId)
请参阅https://neo4j.com/docs/operations-manual/current/monitoring/query-management/。此链接还向您展示如何列出正在运行的查询或事务