Madhup Sukoon
03/17/2022, 8:06 AMfrom prefect.utilities.notifications import slack_notifier
.
.
flow.state_handlers = [slack_notifier()]SLACK_WEBHOOK_URLAnna Geller
flow.set_reference_tasks([task1, task2])SlackTaskprefect.utilities.notifications.slack_notifierslack_notifierfrom prefect.utilities.notifications import slack_notifier
flow.state_handlers = [slack_notifier()][slack_notifier]from prefect.utilities.notifications import slack_notifier
flow.state_handlers = [slack_notifier]Madhup Sukoon
03/17/2022, 10:32 AMslack_notifierignore_states=[state.Running]Madhup Sukoon
03/17/2022, 11:01 AMslack_notifierjira_notifieronly_statesoptionsAnna Geller
from prefect import task
from prefect.engine.state import Running
from prefect.utilities.notifications import slack_notifier
handler = slack_notifier(only_states=[Running]) 
@task(state_handlers=[handler])
def add(x, y):
    return x + yMadhup Sukoon
03/17/2022, 11:50 AMflow.state_handlers = [slack_notifier()]flow.state_handlers = [slack_notifier(only_states=[Running])]slack_notifierMadhup Sukoon
03/17/2022, 1:44 PMflow.state_handlers = [slack_notifier]Anna Geller
Anna Geller
SlackTaskimport prefect
from prefect import task, Flow
from prefect.tasks.notifications import SlackTask
from typing import cast
def post_to_slack_on_failure(task, old_state, new_state):
    if new_state.is_failed():
        if isinstance(new_state.result, Exception):
            value = "```{}```".format(repr(new_state.result))
        else:
            value = cast(str, new_state.message)
        msg = (
            f"The task `{prefect.context.task_name}` failed "
            f"in a flow run {prefect.context.flow_run_id} "
            f"with an exception {value}"
        )
        SlackTask(message=msg).run()
    return new_state
@task(state_handlers=[post_to_slack_on_failure])
def divide_numbers(a, b):
    return 1 / (b - a)
with Flow(name="flow_failing_with_bad_parameters") as flow:
    result = divide_numbers(1, 1)
if __name__ == "__main__":
    flow.run()Madhup Sukoon
03/17/2022, 1:49 PMMadhup Sukoon
03/17/2022, 1:51 PMKevin Kho
Madhup Sukoon
03/17/2022, 1:52 PMslack_notifierjira_notifierKevin Kho
Madhup Sukoon
03/17/2022, 1:55 PMAnna Geller
Kevin Kho
Madhup Sukoon
03/17/2022, 1:58 PMMadhup Sukoon
03/17/2022, 1:59 PMflow.state_handlers = [
            slack_notifier(ignore_states=[state.Running]),
            jira_notifier(
                only_states=[state.Failed],
                options={
                    'project': 'XXXXXXX', 
                    'issuetype': {'name': 'Task'},
                    'description': f'Flow Failed : {project_name}.{flow_name}'},
            )
        ]Kevin Kho
Madhup Sukoon
03/17/2022, 2:00 PMSLACK_WEBHOOK_URLMadhup Sukoon
03/17/2022, 2:01 PMJIRASECRETSKevin Kho
Madhup Sukoon
03/17/2022, 2:33 PMMadhup Sukoon
03/17/2022, 2:34 PMKevin Kho
from prefect import Flow, task
import prefect
from prefect.utilities.notifications import slack_notifier
@task(state_handlers=[slack_notifier])
def test(x):
    <http://prefect.context.logger.info|prefect.context.logger.info>(f"test-{x}")
    return x+1
with Flow("processes") as flow:
    test(1)
flow.run()Kevin Kho
Madhup Sukoon
03/17/2022, 2:43 PMKevin Kho
Kevin Kho
[context.secrets]
SLACK_WEBHOOK_URL = "<https://hooks.slack.com/services/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>"Madhup Sukoon
03/17/2022, 2:45 PMMadhup Sukoon
03/17/2022, 3:52 PMKevin Kho
Madhup Sukoon
03/17/2022, 4:06 PMKevin Kho
