in assets/mwaa_dags/dags/custom/glue_trigger_crawler_operator.py [0:0]
def execute(self, context):
hook = AwsHook(self._aws_conn_id)
glue_client = hook.get_client_type(client_type="glue", region_name=self._region_name)
self.log.info("Triggering crawler")
response = glue_client.start_crawler(Name=self._crawler_name)
if response["ResponseMetadata"]["HTTPStatusCode"] != 200:
raise RuntimeError(
"An error occurred while triggering the crawler: %r" % response
)
self.log.info("Waiting for crawler to finish")
current_retries = 0
while True:
crawler = glue_client.get_crawler(Name=self._crawler_name)
crawler_state = crawler["Crawler"]["State"]
if crawler_state == "READY":
self.log.info("Crawler finished running")
return crawler_state
break
if self._max_wait_time and current_retries >= self._max_wait_time:
raise RuntimeError(
"An error occurred while triggering the crawler: %r" % response
)
current_retries += 1
time.sleep(1)