ramitkataria commented on code in PR #53831:
URL: https://github.com/apache/airflow/pull/53831#discussion_r2255290005
##########
task-sdk/src/airflow/sdk/bases/notifier.py:
##########
@@ -104,4 +132,23 @@ def __call__(self, *args) -> None:
try:
self.notify(context)
except Exception as e:
- self.log.exception("Failed to send notification: %s", e)
+ self.log.exception("Failed to send (blocking) notification: %s", e)
+
+ def __await__(self) -> Generator[Any, None, None]:
+ """
+ Make the notifier awaitable.
+
+ Context provided in the constructor is used.
+ """
+ self._update_context(self.context)
+ self.render_template_fields(self.context)
+ try:
+ return self.async_notify(self.context).__await__()
Review Comment:
1. I'm quite certain `__await__` cannot be async. I tried and got a
TypeError saying `__await__() returned a coroutine`
2. I added the empty generator to fix an error (`__await__() returned
non-iterator of type NoneType`) when an exception is raised from
`self.async_notify`. Later, I realized that I could've just used `yield`.
Anyway, I changed the error handling so it lets the exception propagate so that
the caller knows that there was a failure. So the `yield` isn't needed anymore
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]