feluelle commented on a change in pull request #7541: [AIRFLOW-6822] AWS hooks
should cache boto3 client
URL: https://github.com/apache/airflow/pull/7541#discussion_r385605372
##########
File path: airflow/providers/amazon/aws/hooks/base_aws.py
##########
@@ -232,6 +261,38 @@ def get_resource_type(self, resource_type,
region_name=None, config=None):
resource_type, endpoint_url=endpoint_url, config=config,
verify=self.verify
)
+ @cached_property
+ def conn(self):
+ """Get the underlying boto3 client (cached).
+
+ The return value from this method is cached for efficiency.
+
+ :return: boto3.client or boto3.resource for the current
+ client/resource type and region
+ :rtype: boto3.client() or boto3.resource()
+ :raises AirflowException: self.client_type or self.resource_type are
not
+ populated. These are usually specified to this class, by a subclass
+ __init__ method.
+ """
+ if self.client_type:
+ return self.get_client_type(self.client_type,
region_name=self.region_name)
+ elif self.resource_type:
+ return self.get_resource_type(self.resource_type,
region_name=self.region_name)
+ else:
+ raise AirflowException(
+ 'Either self.client_type or self.resource_type'
+ ' must be specified in the subclass')
+
+ def get_conn(self):
+ """ Get the underlying boto3 client (cached)
+
+ This method is just a simple wrapper that calls the conn method
+ so that caching works as intended. It exists for compatibility
+ with subclasses that rely on a super().get_conn() method.
Review comment:
Please do not indent here :)
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services