ভূমিকা
একটি ক্রলার ম্যানুয়ালি শুরু করার জন্য start_crawler API ব্যবহার করা হয়। এটি ক্রলারের শিডিউল নির্বিশেষে সাথে সাথে রান শুরু করে।
সমস্যা বিবরণ
পাইথনে boto3 লাইব্রেরি ব্যবহার করে একটি ক্রলার শুরু করা।
অ্যালগরিদম / ধাপসমূহ
- boto3 এবং botocore.exceptions ইম্পোর্ট করুন।
- ফাংশনটি crawler_name প্যারামিটার নেবে।
- AWS সেশন এবং Glue ক্লায়েন্ট তৈরি করুন।
glue_client.start_crawler(Name=crawler_name)কল করুন।- রেসপন্স মেটাডেটা রিটার্ন করবে। যদি ক্রলার ইতিমধ্যে রানিং থাকে, তবে
CrawlerRunningExceptionথ্রো হবে। - এক্সেপশন হ্যান্ডল করুন।
উদাহরণ কোড
import boto3
from botocore.exceptions import ClientError
def start_a_crawler(crawler_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.start_crawler(Name=crawler_name)
return response
except ClientError as e:
raise Exception("boto3 client error in start_a_crawler: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in start_a_crawler: " + e.__str__())
# প্রথমবার শুরু
print(start_a_crawler("Data Dimension"))
# দ্বিতীয়বার (ক্রলার রানিং থাকলে এরর)
print(start_a_crawler("Data Dimension"))
আউটপুট
#1st time start the crawler
{'ResponseMetadata': {'RequestId': '73e50130-*****************8e', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 28 Mar 2021 07:26:55 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '2', 'connection': 'keep-alive', 'x-amzn-requestid': '73e50130-***************8e'}, 'RetryAttempts': 0}}
#2nd time run, before crawler completes the operation
Exception: boto3 client error in start_a_crawler: An error occurred (CrawlerRunningException) when calling the StartCrawler operation: Crawler with name Data Dimension has already started
ব্যাখ্যা
প্রথম কল সফল হয় (HTTP 200)।
দ্বিতীয় কল
CrawlerRunningExceptionথ্রো করে কারণ ক্রলার ইতিমধ্যে রানিং আছে।প্রোডাকশনে ক্রলার শুরু করার আগে
get_crawlerদিয়ে স্টেট চেক করা ভালো প্র্যাকটিস।