Hi Boris,
 Cool, it works fine.

 Thanks for the hints using sample codes.

Jason

On Tue, Oct 18, 2016 at 1:12 PM, Boris Tyukin <bo...@boristyukin.com> wrote:

> hi Jason,
>
> here is an example below - in  task0_python_callable i did 1/0 to raise an
> error and Airflow then called task0_failure_cb. I could see FAIL in the
> task log so my  task0_failure_cb was definitely invoked.
>
> The task would still have failed status if look at UI. Are you expecting a
> different behavior?
>
>
> def task0_python_callable(ds, **kwargs):
>     print ds
>     print 1/0
>     return 'Success!!! Execution time = {}'.format(kwargs['execution_
> date'])
>
>
> def task0_failure_cb(ds, **kwargs):
>     logging.info("FAIL")
>
> task0 = PythonOperator(
>     task_id='task0',
>     python_callable=task0_python_callable,
>     on_failure_callback=task0_failure_cb,
>     provide_context=True,
>     dag=dag)
>
>
>
> [2016-10-18 16:07:02,631] {models.py:154} INFO - Filling up the DagBag from
> /home/oracle/airflow/dags/fail_callback.py
> [2016-10-18 16:07:03,239] {models.py:154} INFO - Filling up the DagBag from
> /home/oracle/airflow/dags/fail_callback.py
> [2016-10-18 16:07:03,312] {models.py:1196} INFO -
> ------------------------------------------------------------
> --------------------
> Starting attempt 1 of 1
> ------------------------------------------------------------
> --------------------
>
> [2016-10-18 16:07:03,317] {models.py:1219} INFO - Executing
> <Task(PythonOperator): task0> on 2016-10-18 16:06:02
> [2016-10-18 16:07:03,322] {models.py:1286} ERROR - integer division or
> modulo by zero
> Traceback (most recent call last):
>   File "/usr/local/lib/python2.7/site-packages/airflow/models.py", line
> 1245, in run
>     result = task_copy.execute(context=context)
>   File
> "/usr/local/lib/python2.7/site-packages/airflow/
> operators/python_operator.py",
> line 66, in execute
>     return_value = self.python_callable(*self.op_args, **self.op_kwargs)
>   File "/home/oracle/airflow/dags/fail_callback.py", line 33, in
> task0_python_callable
>     print 1/0
> ZeroDivisionError: integer division or modulo by zero
> [2016-10-18 16:07:03,324] {models.py:1306} INFO - Marking task as FAILED.
> [2016-10-18 16:07:03,324] {fail_callback.py:38} INFO - FAIL
> [2016-10-18 16:07:03,327] {models.py:1327} ERROR - integer division or
> modulo by zero
>
>
> On Tue, Oct 18, 2016 at 2:59 PM, Jason Chen <chingchien.c...@gmail.com>
> wrote:
>
> > Hi airflow team,
> >
> > Is there any sample code to use "on_failure_callback" ?
> > I tried to use that as a callback to "post-process" when a task fails.
> > However, I cannot make it work.
> >
> > The definition of my task is as below (just one task in my dag).
> >
> > It invokes "task0_python_callable" which executes a command-line script
> and
> > it could drops exception. It in turns making task0 failed.
> > In that case, I am thinking it should trigger the "on_failure_callback"
> > function "task0_failure_cb", but it does not happen.
> >
> > Any suggestion?
> > Thanks.
> >
> > Jason
> >
> > =========
> > task0 = PythonOperator(
> >     task_id='task0',
> >     python_callable=task0_python_callable,
> >     on_failure_callback=task0_failure_cb,
> >     dag=dag)
> >
>

Reply via email to