sagmansercan commented on a change in pull request #22389:
URL: https://github.com/apache/airflow/pull/22389#discussion_r839700305



##########
File path: airflow/configuration.py
##########
@@ -608,6 +609,48 @@ def getjson(self, section, key, fallback=_UNSET, **kwargs) 
-> Union[dict, list,
         except JSONDecodeError as e:
             raise AirflowConfigException(f'Unable to parse [{section}] {key!r} 
as valid json') from e
 
+    def gettimedelta(self, section, key, fallback=None, **kwargs) -> 
Optional[datetime.timedelta]:
+        """
+        Gets the config value for the given section and key, and converts it 
into datetime.timedelta object.
+        If the key is missing, then it is considered as `None`.
+
+        :param section: the section from the config
+        :param key: the key defined in the given section
+        :param fallback: fallback value when no config value is given, 
defaults to None
+        :raises AirflowConfigException: raised because ValueError or 
OverflowError
+        :return: datetime.timedelta(seconds=<config_value>) or None
+        """
+        val = self.get(section, key, fallback=fallback, **kwargs)
+
+        if val:
+            # the given value must be convertible to integer
+            try:
+                int_val = int(val)
+            except ValueError:
+                raise AirflowConfigException(
+                    f'Failed to convert value to int. Please check "{key}" key 
in "{section}" section. '
+                    f'Current value: "{val}".'
+                )
+
+            # the given value must be positive.
+            if int_val <= 0:
+                raise AirflowConfigException(
+                    f'Failed to convert value to timedelta in `seconds`. '
+                    f'Value must be greater than zero. '
+                    f'Please check "{key}" key in "{section}" section. Current 
value: "{val}".'
+                )

Review comment:
       I thought that in the case of non-positive values, tasks reach the 
timeout immediately and this did not make sense to me.  So, restricted 
non-positive values. However, I guess I see your point, users can be held 
responsible for adjusting this parameter accordingly, then we don't need to 
handle this in the method, right?




-- 
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]


Reply via email to