Bird
Raised Fist0
Apache Airflowdevops~5 mins

PythonOperator for custom logic in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the PythonOperator in Airflow?
PythonOperator lets you run your own Python functions as tasks inside an Airflow workflow (DAG).
Click to reveal answer
beginner
How do you define a Python function to use with PythonOperator?
You write a normal Python function that contains the logic you want to run as a task.
Click to reveal answer
beginner
Which argument do you use to pass your Python function to PythonOperator?
You use the 'python_callable' argument to give PythonOperator your function.
Click to reveal answer
intermediate
Can PythonOperator pass parameters to your Python function? If yes, how?
Yes, by using 'op_args' for positional arguments or 'op_kwargs' for keyword arguments.
Click to reveal answer
intermediate
What happens if your Python function raises an error during execution in PythonOperator?
The task fails and Airflow marks it as failed, so you can see the error in the logs.
Click to reveal answer
Which argument is used to specify the Python function in PythonOperator?
Acallable_function
Btask_function
Cpython_callable
Dfunction_name
How can you pass keyword arguments to the Python function in PythonOperator?
AUsing 'op_kwargs' argument
BUsing 'kwargs' argument
CUsing 'args' argument
DUsing 'params' argument
What is the result if the Python function raises an exception during task execution?
ATask retries automatically without failure
BTask is skipped
CTask is marked successful
DTask is marked failed
Which Airflow component runs the PythonOperator task?
AScheduler
BExecutor
CWebserver
DMetastore
Can PythonOperator be used to run shell commands directly?
ANo, use BashOperator for shell commands
BNo, use Python scripts only
CYes, but only with special flags
DYes, directly
Explain how to create a PythonOperator task that runs a custom Python function with parameters.
Think about how you connect your function to the operator and pass data.
You got /4 concepts.
    Describe what happens when a PythonOperator task fails due to an error in the Python function.
    Consider Airflow's behavior on task failure.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using PythonOperator in Airflow?
      easy
      A. To run custom Python functions as tasks in a workflow
      B. To schedule workflows using cron syntax
      C. To monitor system resources during task execution
      D. To create database connections automatically

      Solution

      1. Step 1: Understand PythonOperator's role

        PythonOperator allows you to run your own Python code as a task inside Airflow workflows.
      2. Step 2: Compare with other options

        Scheduling uses other operators or settings, monitoring and DB connections are separate features.
      3. Final Answer:

        To run custom Python functions as tasks in a workflow -> Option A
      4. Quick Check:

        PythonOperator runs Python code = B [OK]
      Hint: PythonOperator runs your Python function inside Airflow [OK]
      Common Mistakes:
      • Confusing PythonOperator with scheduling features
      • Thinking it manages database connections
      • Assuming it monitors system resources
      2. Which of the following is the correct way to pass arguments to a Python function using PythonOperator?
      easy
      A. PythonOperator(task_id='task', python_callable=my_func, parameters=[1, 2])
      B. PythonOperator(task_id='task', python_callable=my_func, args=[1, 2])
      C. PythonOperator(task_id='task', python_callable=my_func, op_args=[1, 2])
      D. PythonOperator(task_id='task', python_callable=my_func, inputs=[1, 2])

      Solution

      1. Step 1: Recall argument passing syntax

        PythonOperator uses op_args to pass positional arguments to the function.
      2. Step 2: Check options for correctness

        Only PythonOperator(task_id='task', python_callable=my_func, op_args=[1, 2]) uses op_args correctly; others use wrong parameter names.
      3. Final Answer:

        PythonOperator(task_id='task', python_callable=my_func, op_args=[1, 2]) -> Option C
      4. Quick Check:

        Use op_args to pass args [OK]
      Hint: Use op_args to pass positional arguments to your function [OK]
      Common Mistakes:
      • Using args instead of op_args
      • Using parameters or inputs which are invalid
      • Confusing op_args with op_kwargs
      3. Given this code snippet, what will be printed when the task runs?
      def greet(name):
          print(f"Hello, {name}!")
      
      PythonOperator(
          task_id='say_hello',
          python_callable=greet,
          op_args=['Alice'],
          dag=dag
      )
      medium
      A. Hello, ['Alice']!
      B. Hello, name!
      C. No output, function not called
      D. Hello, Alice!

      Solution

      1. Step 1: Understand function call with op_args

        The function greet is called with 'Alice' as the argument for name.
      2. Step 2: Evaluate the print statement output

        It prints "Hello, Alice!" exactly as formatted by the f-string.
      3. Final Answer:

        Hello, Alice! -> Option D
      4. Quick Check:

        Function prints Hello, Alice! [OK]
      Hint: op_args passes list items as function arguments [OK]
      Common Mistakes:
      • Thinking op_args passes the list as one argument
      • Confusing variable name with string 'name'
      • Assuming function is not called
      4. Identify the error in this PythonOperator usage:
      def add(x, y):
          return x + y
      
      PythonOperator(
          task_id='add_task',
          python_callable=add,
          op_kwargs={'x': 5, 'z': 3},
          dag=dag
      )
      medium
      A. python_callable must be a string
      B. The function add does not accept argument 'z'
      C. task_id is missing
      D. op_kwargs should be a list, not a dict

      Solution

      1. Step 1: Check function parameters

        The function add expects only 'x' and 'y' as arguments.
      2. Step 2: Analyze op_kwargs keys

        op_kwargs passes 'x' and 'z', but 'z' is not a valid parameter for add, causing an error.
      3. Final Answer:

        The function add does not accept argument 'z' -> Option B
      4. Quick Check:

        Extra argument 'z' causes error [OK]
      Hint: Function args must match op_kwargs keys exactly [OK]
      Common Mistakes:
      • Passing wrong argument names in op_kwargs
      • Thinking op_kwargs can be a list
      • Confusing python_callable type
      5. You want to create a PythonOperator task that calls a function process_data which requires a list of numbers and a flag. The function signature is def process_data(numbers, verbose=False):. How do you correctly pass the arguments to the operator?
      hard
      A. PythonOperator(task_id='proc', python_callable=process_data, op_kwargs={'numbers': [1,2,3], 'verbose': True}, dag=dag)
      B. PythonOperator(task_id='proc', python_callable=process_data, op_args=[1,2,3, True], dag=dag)
      C. PythonOperator(task_id='proc', python_callable=process_data, op_args=[1,2,3], op_kwargs={'verbose': True}, dag=dag)
      D. PythonOperator(task_id='proc', python_callable=process_data, args=[[1,2,3], True], dag=dag)

      Solution

      1. Step 1: Understand function parameters

        process_data expects 'numbers' (list) and optional 'verbose' keyword argument.
      2. Step 2: Match argument passing style

        Using op_kwargs with keys 'numbers' and 'verbose' correctly passes both arguments by name.
      3. Step 3: Check other options

        B passes four positional arguments causing TypeError. C passes three positional arguments (1,2,3) plus verbose=True, but function expects only two positional arguments causing TypeError. D uses invalid 'args' parameter.
      4. Final Answer:

        PythonOperator(task_id='proc', python_callable=process_data, op_kwargs={'numbers': [1,2,3], 'verbose': True}, dag=dag) -> Option A
      5. Quick Check:

        Use op_kwargs for named args [OK]
      Hint: Use op_kwargs for named arguments, op_args for positional [OK]
      Common Mistakes:
      • Passing too many positional arguments
      • Using wrong parameter names like args instead of op_args
      • Mixing positional and keyword args incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard