1

気流 1.7.1.3 と python 2.7 を使用しています

を使用して各タスクを個別に実行すると完全に機能するDAGを作成しました

気流テスト [myDAG] [myTask] 2016-10-14

でも、

airflow trigger_dag [myDAG]

また

気流実行 [myDAG] [myTask] 2016-10-14

どちらも「この接続は閉じられています」という SQLalchemy エラーを発生させます。

[...]
    with self.engine.connect() as connection:
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2016, in connect
    return self._connection_cls(self, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 72, in __init__
    if connection is not None else engine.raw_connection()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2102, in raw_connection
    self.pool.unique_connection, _connection)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2072, in _wrap_pool_connect
    return fn()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 318, in unique_connection
    return _ConnectionFairy._checkout(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 746, in _checkout
    raise exc.InvalidRequestError("This connection is closed")
InvalidRequestError: This connection is closed
[2016-10-14 15:49:30,704] {models.py:1306} INFO - Marking task as FAILED.
[2016-10-14 15:49:30,712] {models.py:1327} ERROR - This connection is closed

これは、SQLalchemy を介した Oracle 12 データベースへの接続であり、スクリプトで session.commit() を使用すると、このエラーが発生します。

誰かがこの違いとエラーを説明できる手がかりを持っていますか?

4

1 に答える 1

1

これは、こちらで説明されている既知のバグです。このバグが修正されるまで、SQLAlchemy 経由で Oracle に接続することはできません。

この問題は、ソース コードの一部の SQL 構文が原因です。Oracle では「SELECT 1」とは言えません。「SELECT 1 FROM DUAL」と言う必要があります。

Airflow のフックの 1 つを使用してみてください: https://github.com/apache/incubator-airflow/tree/master/airflow/hooks

あなたを助けることができるoracle_hookがあるようです。幸運を。

于 2016-12-05T13:40:19.080 に答える