diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..d8f8414f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,19 @@ +{ + // IntelliSense を使用して利用可能な属性を学べます。 + // 既存の属性の説明をホバーして表示します。 + // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: CRMデータ取得ローカル実行", + "type": "python", + "request": "launch", + // windowsだと\区切りかも + "program": "ecs\\crm-datafetch\\main.py", + "console": "integratedTerminal", + "justMyCode": true, + "envFile": "${workspaceFolder}/.env", + "args": ["local"] + } + ] + } \ No newline at end of file diff --git a/ecs/crm-datafetch/src/aws/s3.py b/ecs/crm-datafetch/src/aws/s3.py index e5235016..229b8666 100644 --- a/ecs/crm-datafetch/src/aws/s3.py +++ b/ecs/crm-datafetch/src/aws/s3.py @@ -6,6 +6,7 @@ from src.environments import ( IMPORT_DATA_BUCKET, OBJECT_INFO_FOLDER, OBJECT_INFO_FILENAME, + PROCESS_RESULT_FOLDER, CRM_IMPORT_DATA_FOLDER, CRM_IMPORT_DATA_BACKUP_FOLDER, LAST_FETCH_DATE_FOLDER, @@ -49,7 +50,7 @@ class S3ResourceNonBucket: def __init__(self) -> None: self.__s3_resource = boto3.resource(AWS_RESOURCE_S3) - def copy(self, src_bucket, src_key, dest_bucket, dest_key): + def copy(self, src_bucket, src_key, dest_bucket, dest_key) -> None: copy_source = {'Bucket': src_bucket, 'Key': src_key} self.__s3_resource.meta.client.copy(copy_source, dest_bucket, dest_key) @@ -62,13 +63,13 @@ class ConfigBucket: def __init__(self) -> None: self.__s3_resource = S3Resource(CRM_CONFIG_BUCKET) - def get_object_info_file(self): + def get_object_info_file(self) -> str: return self.__s3_resource.get_object(f'{OBJECT_INFO_FOLDER}/{OBJECT_INFO_FILENAME}') - def get_last_fetch_datetime_file(self, file_name): + def get_last_fetch_datetime_file(self, file_name) -> str: return self.__s3_resource.get_object(f'{LAST_FETCH_DATE_FOLDER}/{file_name}') - def put_last_fetch_datetime_file(self, file_name, data): + def put_last_fetch_datetime_file(self, file_name, data) -> None: self.__s3_resource.put_object( f'{LAST_FETCH_DATE_FOLDER}/{file_name}', data) return @@ -80,7 +81,7 @@ class DataBucket: def __init__(self) -> None: self.__s3_resource = S3Resource(IMPORT_DATA_BUCKET) - def put_csv(self, file_name, data): + def put_csv(self, file_name, data) -> None: object_key = f'{CRM_IMPORT_DATA_FOLDER}/{file_name}' self.__s3_resource.put_object(object_key, data) return @@ -92,16 +93,16 @@ class BackupBucket: def __init__(self) -> None: self.__s3_resource = S3Resource(CRM_BACKUP_BUCKET) - def put_response_json(self, file_name, data): + def put_response_json(self, file_name, data) -> None: object_key = f'{RESPONSE_JSON_BACKUP_FOLDER}/{file_name}' self.__s3_resource.put_object(object_key, json.dumps(data)) return - def put_csv_bk(self, file_name, data): + def put_csv_bk(self, file_name, data) -> None: object_key = f'{CRM_IMPORT_DATA_BACKUP_FOLDER}/{file_name}' self.__s3_resource.put_object(object_key, data) return - def put_result_json(self, file_name, data): - object_key = f'{RESPONSE_JSON_BACKUP_FOLDER}/{file_name}' + def put_result_json(self, file_name, data) -> None: + object_key = f'{PROCESS_RESULT_FOLDER}/{file_name}' self.__s3_resource.put_object(object_key, json.dumps(data)) diff --git a/ecs/crm-datafetch/src/chk.py b/ecs/crm-datafetch/src/chk.py index 1342243e..077f0ee2 100644 --- a/ecs/crm-datafetch/src/chk.py +++ b/ecs/crm-datafetch/src/chk.py @@ -1,4 +1,4 @@ -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import( CHK_JP_NAME ) @@ -8,9 +8,6 @@ from src.error.exceptions import( from src.config.objects import TargetObject -logger = Logger().get_logger() - - def check_object_info(object_info, execute_datetime): # ① オブジェクト情報形式チェック処理開始ログを出力する logger.info('I-CHK-01 オブジェクト情報形式チェック処理を開始します') diff --git a/ecs/crm-datafetch/src/config/__init__.py b/ecs/crm-datafetch/src/config/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/crm-datafetch/src/constants.py b/ecs/crm-datafetch/src/constants.py index fcd6b4a3..a394df16 100644 --- a/ecs/crm-datafetch/src/constants.py +++ b/ecs/crm-datafetch/src/constants.py @@ -1,38 +1,38 @@ # environments(task settings file) -LOG_LEVEL = "LOG_LEVEL" # ログ出力レベル。DEBUG, INFO, WARNING, ERRORの4つから指定する -CRM_AUTH_TIMEOUT = 'CRM_AUTH_TIMEOUT' # CRMへの認証処理のタイムアウト秒数 -CRM_AUTH_MAX_RETRY_ATTEMPT = 'CRM_AUTH_MAX_RETRY_ATTEMPT' # CRMへの認証処理の最大リトライ試行回数 -CRM_AUTH_RETRY_INTERVAL = 'CRM_AUTH_RETRY_INTERVAL' # CRMへの認証処理のリトライ時の初回待ち秒数 -CRM_AUTH_RETRY_MIN_INTERVAL = 'CRM_AUTH_RETRY_MIN_INTERVAL' # CRMへの認証処理のリトライ時の最小待ち秒数 -CRM_AUTH_RETRY_MAX_INTERVAL = 'CRM_AUTH_RETRY_MAX_INTERVAL' # CRMへの認証処理のリトライ時の最大待ち秒数 -CRM_GET_RECORD_COUNT_TIMEOUT = 'CRM_GET_RECORD_COUNT_TIMEOUT' # CRMのレコード件数取得処理のタイムアウト秒数 -CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT = 'CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT' # CRMのレコード件数取得処理の最大リトライ試行回数 -CRM_GET_RECORD_COUNT_RETRY_INTERVAL = 'CRM_GET_RECORD_COUNT_RETRY_INTERVAL' # CRMのレコード件数取得処理のリトライ時の初回待ち秒数 -CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL = 'CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL' # CRMのレコード件数取得処理のリトライ時の最小待ち秒数 -CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL = 'CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL' # CRMのレコード件数取得処理のリトライ時の最大待ち秒数 -CRM_FETCH_RECORD_TIMEOUT = 'CRM_FETCH_RECORD_TIMEOUT' # CRMのレコード取得処理のタイムアウト秒数 -CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT = 'CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT' # CRMのレコード取得処理の最大リトライ試行回数 -CRM_FETCH_RECORD_RETRY_INTERVAL = 'CRM_FETCH_RECORD_RETRY_INTERVAL' # CRMのレコード取得処理のリトライ時の初回待ち秒数 -CRM_FETCH_RECORD_RETRY_MIN_INTERVAL = 'CRM_FETCH_RECORD_RETRY_MIN_INTERVAL' # CRMのレコード取得処理のリトライ時の最小待ち秒数 -CRM_FETCH_RECORD_RETRY_MAX_INTERVAL = 'CRM_FETCH_RECORD_RETRY_MAX_INTERVAL' # CRMのレコード取得処理のリトライ時の最大待ち秒数 +LOG_LEVEL = "LOG_LEVEL" # ログ出力レベル。DEBUG, INFO, WARNING, ERRORの4つから指定する +CRM_AUTH_TIMEOUT = 'CRM_AUTH_TIMEOUT' # CRMへの認証処理のタイムアウト秒数 +CRM_AUTH_MAX_RETRY_ATTEMPT = 'CRM_AUTH_MAX_RETRY_ATTEMPT' # CRMへの認証処理の最大リトライ試行回数 +CRM_AUTH_RETRY_INTERVAL = 'CRM_AUTH_RETRY_INTERVAL' # CRMへの認証処理のリトライ時の初回待ち秒数 +CRM_AUTH_RETRY_MIN_INTERVAL = 'CRM_AUTH_RETRY_MIN_INTERVAL' # CRMへの認証処理のリトライ時の最小待ち秒数 +CRM_AUTH_RETRY_MAX_INTERVAL = 'CRM_AUTH_RETRY_MAX_INTERVAL' # CRMへの認証処理のリトライ時の最大待ち秒数 +CRM_GET_RECORD_COUNT_TIMEOUT = 'CRM_GET_RECORD_COUNT_TIMEOUT' # CRMのレコード件数取得処理のタイムアウト秒数 +CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT = 'CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT' # CRMのレコード件数取得処理の最大リトライ試行回数 +CRM_GET_RECORD_COUNT_RETRY_INTERVAL = 'CRM_GET_RECORD_COUNT_RETRY_INTERVAL' # CRMのレコード件数取得処理のリトライ時の初回待ち秒数 +CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL = 'CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL' # CRMのレコード件数取得処理のリトライ時の最小待ち秒数 +CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL = 'CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL' # CRMのレコード件数取得処理のリトライ時の最大待ち秒数 +CRM_FETCH_RECORD_TIMEOUT = 'CRM_FETCH_RECORD_TIMEOUT' # CRMのレコード取得処理のタイムアウト秒数 +CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT = 'CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT' # CRMのレコード取得処理の最大リトライ試行回数 +CRM_FETCH_RECORD_RETRY_INTERVAL = 'CRM_FETCH_RECORD_RETRY_INTERVAL' # CRMのレコード取得処理のリトライ時の初回待ち秒数 +CRM_FETCH_RECORD_RETRY_MIN_INTERVAL = 'CRM_FETCH_RECORD_RETRY_MIN_INTERVAL' # CRMのレコード取得処理のリトライ時の最小待ち秒数 +CRM_FETCH_RECORD_RETRY_MAX_INTERVAL = 'CRM_FETCH_RECORD_RETRY_MAX_INTERVAL' # CRMのレコード取得処理のリトライ時の最大待ち秒数 # environments(ECS Task Enviroment) -CRM_AUTH_DOMAIN = 'CRM_AUTH_DOMAIN' # CRMのAPI実行のための認証エンドポイントのドメイン -CRM_USER_NAME = 'CRM_USER_NAME' # CRMのAPI実行用ユーザ名 -CRM_USER_PASSWORD = 'CRM_USER_PASSWORD' # CRMのAPI実行用ユーザパスワード -CRM_USER_SECURITY_TOKEN = 'CRM_USER_SECURITY_TOKEN' # CRMのAPI実行用ユーザのセキュリティトークン -CRM_CONFIG_BUCKET = 'CRM_CONFIG_BUCKET' # CRMデータ取得用の設定ファイルを格納するバケット名 -CRM_BACKUP_BUCKET = 'CRM_BACKUP_BUCKET' # CRMのバックアップデータを格納するバケット名 -IMPORT_DATA_BUCKET = 'IMPORT_DATA_BUCKET' # CRMの取込データを格納するバケット名 -OBJECT_INFO_FOLDER = 'OBJECT_INFO_FOLDER' # CRM取得対象オブジェクトの情報を格納するフォルダパス -OBJECT_INFO_FILENAME = 'OBJECT_INFO_FILENAME' # CRM取得対象オブジェクトの情報のファイル名 -PROCESS_RESULT_FOLDER = 'PROCESS_RESULT_FOLDER' # CRMデータ取得結果を格納するフォルダパス -PROCESS_RESULT_FILENAME = 'PROCESS_RESULT_FILENAME' # CRMデータ取得結果を格納するファイル名 -LAST_FETCH_DATE_FOLDER = 'LAST_FETCH_DATE_FOLDER' # CRMからの最終取得日時ファイルを格納するフォルダパス -CRM_IMPORT_DATA_FOLDER ='CRM_IMPORT_DATA_FOLDER' # CRMから取得し、取込用に変換したデータを格納するフォルダ -LAST_FETCH_DATE_BACKUP_FOLDER = 'LAST_FETCH_DATE_BACKUP_FOLDER' # CRMからの最終取得日時ファイルのバックアップを格納するフォルダパス -RESPONSE_JSON_BACKUP_FOLDER = 'RESPONSE_JSON_BACKUP_FOLDER' # CRMから取得した生データのバックアップを格納するフォルダパス -CRM_IMPORT_DATA_BACKUP_FOLDER = 'CRM_IMPORT_DATA_BACKUP_FOLDER' # CRMから取得し、取込用に変換したデータのバックアップを格納するフォルダ +CRM_AUTH_DOMAIN = 'CRM_AUTH_DOMAIN' # CRMのAPI実行のための認証エンドポイントのドメイン +CRM_USER_NAME = 'CRM_USER_NAME' # CRMのAPI実行用ユーザ名 +CRM_USER_PASSWORD = 'CRM_USER_PASSWORD' # CRMのAPI実行用ユーザパスワード +CRM_USER_SECURITY_TOKEN = 'CRM_USER_SECURITY_TOKEN' # CRMのAPI実行用ユーザのセキュリティトークン +CRM_CONFIG_BUCKET = 'CRM_CONFIG_BUCKET' # CRMデータ取得用の設定ファイルを格納するバケット名 +CRM_BACKUP_BUCKET = 'CRM_BACKUP_BUCKET' # CRMのバックアップデータを格納するバケット名 +IMPORT_DATA_BUCKET = 'IMPORT_DATA_BUCKET' # CRMの取込データを格納するバケット名 +OBJECT_INFO_FOLDER = 'OBJECT_INFO_FOLDER' # CRM取得対象オブジェクトの情報を格納するフォルダパス +OBJECT_INFO_FILENAME = 'OBJECT_INFO_FILENAME' # CRM取得対象オブジェクトの情報のファイル名 +PROCESS_RESULT_FOLDER = 'PROCESS_RESULT_FOLDER' # CRMデータ取得結果を格納するフォルダパス +PROCESS_RESULT_FILENAME = 'PROCESS_RESULT_FILENAME' # CRMデータ取得結果を格納するファイル名 +LAST_FETCH_DATE_FOLDER = 'LAST_FETCH_DATE_FOLDER' # CRMからの最終取得日時ファイルを格納するフォルダパス +CRM_IMPORT_DATA_FOLDER = 'CRM_IMPORT_DATA_FOLDER' # CRMから取得し、取込用に変換したデータを格納するフォルダ +LAST_FETCH_DATE_BACKUP_FOLDER = 'LAST_FETCH_DATE_BACKUP_FOLDER' # CRMからの最終取得日時ファイルのバックアップを格納するフォルダパス +RESPONSE_JSON_BACKUP_FOLDER = 'RESPONSE_JSON_BACKUP_FOLDER' # CRMから取得した生データのバックアップを格納するフォルダパス +CRM_IMPORT_DATA_BACKUP_FOLDER = 'CRM_IMPORT_DATA_BACKUP_FOLDER' # CRMから取得し、取込用に変換したデータのバックアップを格納するフォルダ # 時刻フォーマット # .000ZはUTCを表す。ミリ秒までの考慮は不要なので固定で指定 diff --git a/ecs/crm-datafetch/src/conv.py b/ecs/crm-datafetch/src/conv.py index 88b86ae8..eb17c4c3 100644 --- a/ecs/crm-datafetch/src/conv.py +++ b/ecs/crm-datafetch/src/conv.py @@ -1,5 +1,5 @@ from datetime import datetime -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import ( CONV_JP_NAME, ) @@ -9,9 +9,6 @@ from src.error.exceptions import( from src.converter.converter import CSVStringConverter -logger = Logger().get_logger() - - def convert_crm_csvdata(target_object, sf_object_jsons): # ① CSV変換処理の開始ログを出力する logger.info(f'I-CONV-01 [{target_object.object_name}] のCSV変換処理を開始します') diff --git a/ecs/crm-datafetch/src/converter/__init__.py b/ecs/crm-datafetch/src/converter/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ecs/crm-datafetch/src/csvbk.py b/ecs/crm-datafetch/src/csvbk.py index db490c63..75c5f780 100644 --- a/ecs/crm-datafetch/src/csvbk.py +++ b/ecs/crm-datafetch/src/csvbk.py @@ -1,4 +1,4 @@ -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.aws.s3 import BackupBucket from src.constants import ( CSVBK_JP_NAME @@ -8,9 +8,6 @@ from src.error.exceptions import( ) -logger = Logger().get_logger() - - def backup_crm_csvdata(target_object, date_path, csv_object): # ① CSVバックアップ処理の開始ログを出力する logger.info( @@ -22,6 +19,9 @@ def backup_crm_csvdata(target_object, date_path, csv_object): backup_bucket.put_csv_bk( f'{date_path}/{target_object.upload_file_name}.csv', csv_object.csv_buffer) + logger.debug( + f'D-CSVBK-02 [{target_object.object_name}] のCSVデータバックアップ 正常終了') + except Exception as e: raise FileUploadException( 'E-CSVBK-01', CSVBK_JP_NAME, f'[{target_object.object_name}] CSVデータのバックアップに失敗しました ファイル名:[{target_object.upload_file_name}.csv] エラー内容:[{e}]') diff --git a/ecs/crm-datafetch/src/date.py b/ecs/crm-datafetch/src/date.py index 8fff0d94..adcfdd4c 100644 --- a/ecs/crm-datafetch/src/date.py +++ b/ecs/crm-datafetch/src/date.py @@ -1,4 +1,4 @@ -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import( DATE_JP_NAME ) @@ -15,9 +15,6 @@ from src.config.objects import LastFetchDatetime from src.aws.s3 import ConfigBucket -logger = Logger().get_logger() - - def set_datetime_period(target_object, execute_datetime): # ① データ取得期間設定処理の開始ログを出力する logger.info( diff --git a/ecs/crm-datafetch/src/end.py b/ecs/crm-datafetch/src/end.py index e2b274b3..7604b5b3 100644 --- a/ecs/crm-datafetch/src/end.py +++ b/ecs/crm-datafetch/src/end.py @@ -1,4 +1,4 @@ -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import ( END_JP_NAME ) @@ -11,9 +11,6 @@ from src.error.exceptions import( from src.aws.s3 import BackupBucket -logger = Logger().get_logger() - - def updload_result_data(process_result, date_path): # ① 取得処理実施結果アップロード処理のログを出力する logger.info( diff --git a/ecs/crm-datafetch/src/environments.py b/ecs/crm-datafetch/src/environments.py index 8d63cc64..262a2fbd 100644 --- a/ecs/crm-datafetch/src/environments.py +++ b/ecs/crm-datafetch/src/environments.py @@ -1,73 +1,38 @@ import os - -from src.constants import ( - LOG_LEVEL, - LOG_LEVEL_INFO, - CRM_AUTH_TIMEOUT, - CRM_AUTH_MAX_RETRY_ATTEMPT, - CRM_AUTH_RETRY_INTERVAL, - CRM_AUTH_RETRY_MIN_INTERVAL, - CRM_AUTH_RETRY_MAX_INTERVAL, - CRM_GET_RECORD_COUNT_TIMEOUT, - CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT, - CRM_GET_RECORD_COUNT_RETRY_INTERVAL, - CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL, - CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL, - CRM_FETCH_RECORD_TIMEOUT, - CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT, - CRM_FETCH_RECORD_RETRY_INTERVAL, - CRM_FETCH_RECORD_RETRY_MIN_INTERVAL, - CRM_FETCH_RECORD_RETRY_MAX_INTERVAL, - CRM_AUTH_DOMAIN, - CRM_USER_NAME, - CRM_USER_PASSWORD, - CRM_USER_SECURITY_TOKEN, - CRM_CONFIG_BUCKET, - CRM_BACKUP_BUCKET, - IMPORT_DATA_BUCKET, - OBJECT_INFO_FOLDER, - OBJECT_INFO_FILENAME, - PROCESS_RESULT_FOLDER, - PROCESS_RESULT_FILENAME, - LAST_FETCH_DATE_FOLDER, - CRM_IMPORT_DATA_FOLDER, - LAST_FETCH_DATE_BACKUP_FOLDER, - RESPONSE_JSON_BACKUP_FOLDER, - CRM_IMPORT_DATA_BACKUP_FOLDER -) +import src.constants as constants # environments(task settings file) -LOG_LEVEL = os.environ.get(LOG_LEVEL, LOG_LEVEL_INFO) # ログ出力レベル。DEBUG, INFO, WARNING, ERRORの4つから指定する -CRM_AUTH_TIMEOUT = os.environ["CRM_AUTH_TIMEOUT"] # CRMへの認証処理のタイムアウト秒数 -CRM_AUTH_MAX_RETRY_ATTEMPT = os.environ["CRM_AUTH_MAX_RETRY_ATTEMPT"] # CRMへの認証処理の最大リトライ試行回数 -CRM_AUTH_RETRY_INTERVAL = os.environ["CRM_AUTH_RETRY_INTERVAL"] # CRMへの認証処理のリトライ時の初回待ち秒数 -CRM_AUTH_RETRY_MIN_INTERVAL = os.environ["CRM_AUTH_RETRY_MIN_INTERVAL"] # CRMへの認証処理のリトライ時の最小待ち秒数 -CRM_AUTH_RETRY_MAX_INTERVAL = os.environ["CRM_AUTH_RETRY_MAX_INTERVAL"] # CRMへの認証処理のリトライ時の最大待ち秒数 -CRM_GET_RECORD_COUNT_TIMEOUT = os.environ["CRM_GET_RECORD_COUNT_TIMEOUT"] # CRMのレコード件数取得処理のタイムアウト秒数 -CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT = os.environ["CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT"] # CRMのレコード件数取得処理の最大リトライ試行回数 -CRM_GET_RECORD_COUNT_RETRY_INTERVAL = os.environ["CRM_GET_RECORD_COUNT_RETRY_INTERVAL"] # CRMのレコード件数取得処理のリトライ時の初回待ち秒数 -CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL = os.environ["CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL"] # CRMのレコード件数取得処理のリトライ時の最小待ち秒数 -CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL = os.environ["CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL"] # CRMのレコード件数取得処理のリトライ時の最大待ち秒数 -CRM_FETCH_RECORD_TIMEOUT = os.environ["CRM_FETCH_RECORD_TIMEOUT"] # CRMのレコード取得処理のタイムアウト秒数 -CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT = os.environ["CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT"] # CRMのレコード取得処理の最大リトライ試行回数 -CRM_FETCH_RECORD_RETRY_INTERVAL = os.environ["CRM_FETCH_RECORD_RETRY_INTERVAL"] # CRMのレコード取得処理のリトライ時の初回待ち秒数 -CRM_FETCH_RECORD_RETRY_MIN_INTERVAL = os.environ["CRM_FETCH_RECORD_RETRY_MIN_INTERVAL"] # CRMのレコード取得処理のリトライ時の最小待ち秒数 -CRM_FETCH_RECORD_RETRY_MAX_INTERVAL = os.environ["CRM_FETCH_RECORD_RETRY_MAX_INTERVAL"] # CRMのレコード取得処理のリトライ時の最大待ち秒数 +LOG_LEVEL = os.environ.get(constants.LOG_LEVEL, constants.LOG_LEVEL_INFO) # ログ出力レベル。DEBUG, INFO, WARNING, ERRORの4つから指定する +CRM_AUTH_TIMEOUT = os.environ[constants.CRM_AUTH_TIMEOUT] # CRMへの認証処理のタイムアウト秒数 +CRM_AUTH_MAX_RETRY_ATTEMPT = os.environ[constants.CRM_AUTH_MAX_RETRY_ATTEMPT] # CRMへの認証処理の最大リトライ試行回数 +CRM_AUTH_RETRY_INTERVAL = os.environ[constants.CRM_AUTH_RETRY_INTERVAL] # CRMへの認証処理のリトライ時の初回待ち秒数 +CRM_AUTH_RETRY_MIN_INTERVAL = os.environ[constants.CRM_AUTH_RETRY_MIN_INTERVAL] # CRMへの認証処理のリトライ時の最小待ち秒数 +CRM_AUTH_RETRY_MAX_INTERVAL = os.environ[constants.CRM_AUTH_RETRY_MAX_INTERVAL] # CRMへの認証処理のリトライ時の最大待ち秒数 +CRM_GET_RECORD_COUNT_TIMEOUT = os.environ[constants.CRM_GET_RECORD_COUNT_TIMEOUT] # CRMのレコード件数取得処理のタイムアウト秒数 +CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT = os.environ[constants.CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT] # CRMのレコード件数取得処理の最大リトライ試行回数 +CRM_GET_RECORD_COUNT_RETRY_INTERVAL = os.environ[constants.CRM_GET_RECORD_COUNT_RETRY_INTERVAL] # CRMのレコード件数取得処理のリトライ時の初回待ち秒数 +CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL = os.environ[constants.CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL] # CRMのレコード件数取得処理のリトライ時の最小待ち秒数 +CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL = os.environ[constants.CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL] # CRMのレコード件数取得処理のリトライ時の最大待ち秒数 +CRM_FETCH_RECORD_TIMEOUT = os.environ[constants.CRM_FETCH_RECORD_TIMEOUT] # CRMのレコード取得処理のタイムアウト秒数 +CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT = os.environ[constants.CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT] # CRMのレコード取得処理の最大リトライ試行回数 +CRM_FETCH_RECORD_RETRY_INTERVAL = os.environ[constants.CRM_FETCH_RECORD_RETRY_INTERVAL] # CRMのレコード取得処理のリトライ時の初回待ち秒数 +CRM_FETCH_RECORD_RETRY_MIN_INTERVAL = os.environ[constants.CRM_FETCH_RECORD_RETRY_MIN_INTERVAL] # CRMのレコード取得処理のリトライ時の最小待ち秒数 +CRM_FETCH_RECORD_RETRY_MAX_INTERVAL = os.environ[constants.CRM_FETCH_RECORD_RETRY_MAX_INTERVAL] # CRMのレコード取得処理のリトライ時の最大待ち秒数 # environments(ECS Task Enviroment) -CRM_AUTH_DOMAIN = os.environ["CRM_AUTH_DOMAIN"] # CRMのAPI実行のための認証エンドポイントのドメイン -CRM_USER_NAME = os.environ["CRM_USER_NAME"] # CRMのAPI実行用ユーザ名 -CRM_USER_PASSWORD = os.environ["CRM_USER_PASSWORD"] # CRMのAPI実行用ユーザパスワード -CRM_USER_SECURITY_TOKEN = os.environ["CRM_USER_SECURITY_TOKEN"] # CRMのAPI実行用ユーザのセキュリティトークン -CRM_CONFIG_BUCKET = os.environ["CRM_CONFIG_BUCKET"] # CRMデータ取得用の設定ファイルを格納するバケット名 -CRM_BACKUP_BUCKET = os.environ["CRM_BACKUP_BUCKET"] # CRMのバックアップデータを格納するバケット名 -IMPORT_DATA_BUCKET = os.environ["IMPORT_DATA_BUCKET"] # CRMの取込データを格納するバケット名 -OBJECT_INFO_FOLDER = os.environ["OBJECT_INFO_FOLDER"] # CRM取得対象オブジェクトの情報を格納するフォルダパス -OBJECT_INFO_FILENAME = os.environ["OBJECT_INFO_FILENAME"] # CRM取得対象オブジェクトの情報のファイル名 -PROCESS_RESULT_FOLDER = os.environ["PROCESS_RESULT_FOLDER"] # CRMデータ取得結果を格納するフォルダパス -PROCESS_RESULT_FILENAME = os.environ["PROCESS_RESULT_FILENAME"] # CRMデータ取得結果を格納するファイル名 -LAST_FETCH_DATE_FOLDER = os.environ["LAST_FETCH_DATE_FOLDER"] # CRMからの最終取得日時ファイルを格納するフォルダパス -CRM_IMPORT_DATA_FOLDER = os.environ["CRM_IMPORT_DATA_FOLDER"] # CRMから取得し、取込用に変換したデータを格納するフォルダ -LAST_FETCH_DATE_BACKUP_FOLDER = os.environ["LAST_FETCH_DATE_BACKUP_FOLDER"] # CRMからの最終取得日時ファイルのバックアップを格納するフォルダパス -RESPONSE_JSON_BACKUP_FOLDER = os.environ["FETCH_DATA_BACKUP_FOLDER"] # CRMから取得した生データのバックアップを格納するフォルダパス -CRM_IMPORT_DATA_BACKUP_FOLDER = os.environ["CRM_IMPORT_DATA_BACKUP_FOLDER"] # CRMから取得し、取込用に変換したデータのバックアップを格納するフォルダ +CRM_AUTH_DOMAIN = os.environ[constants.CRM_AUTH_DOMAIN] # CRMのAPI実行のための認証エンドポイントのドメイン +CRM_USER_NAME = os.environ[constants.CRM_USER_NAME] # CRMのAPI実行用ユーザ名 +CRM_USER_PASSWORD = os.environ[constants.CRM_USER_PASSWORD] # CRMのAPI実行用ユーザパスワード +CRM_USER_SECURITY_TOKEN = os.environ[constants.CRM_USER_SECURITY_TOKEN] # CRMのAPI実行用ユーザのセキュリティトークン +CRM_CONFIG_BUCKET = os.environ[constants.CRM_CONFIG_BUCKET] # CRMデータ取得用の設定ファイルを格納するバケット名 +CRM_BACKUP_BUCKET = os.environ[constants.CRM_BACKUP_BUCKET] # CRMのバックアップデータを格納するバケット名 +IMPORT_DATA_BUCKET = os.environ[constants.IMPORT_DATA_BUCKET] # CRMの取込データを格納するバケット名 +OBJECT_INFO_FOLDER = os.environ[constants.OBJECT_INFO_FOLDER] # CRM取得対象オブジェクトの情報を格納するフォルダパス +OBJECT_INFO_FILENAME = os.environ[constants.OBJECT_INFO_FILENAME] # CRM取得対象オブジェクトの情報のファイル名 +PROCESS_RESULT_FOLDER = os.environ[constants.PROCESS_RESULT_FOLDER] # CRMデータ取得結果を格納するフォルダパス +PROCESS_RESULT_FILENAME = os.environ[constants.PROCESS_RESULT_FILENAME] # CRMデータ取得結果を格納するファイル名 +LAST_FETCH_DATE_FOLDER = os.environ[constants.LAST_FETCH_DATE_FOLDER] # CRMからの最終取得日時ファイルを格納するフォルダパス +CRM_IMPORT_DATA_FOLDER = os.environ[constants.CRM_IMPORT_DATA_FOLDER] # CRMから取得し、取込用に変換したデータを格納するフォルダ +LAST_FETCH_DATE_BACKUP_FOLDER = os.environ[constants.LAST_FETCH_DATE_BACKUP_FOLDER] # CRMからの最終取得日時ファイルのバックアップを格納するフォルダパス +RESPONSE_JSON_BACKUP_FOLDER = os.environ[constants.RESPONSE_JSON_BACKUP_FOLDER] # CRMから取得した生データのバックアップを格納するフォルダパス +CRM_IMPORT_DATA_BACKUP_FOLDER = os.environ[constants.CRM_IMPORT_DATA_BACKUP_FOLDER] # CRMから取得し、取込用に変換したデータのバックアップを格納するフォルダ diff --git a/ecs/crm-datafetch/src/error/exceptions.py b/ecs/crm-datafetch/src/error/exceptions.py index 528c262d..71a174c0 100644 --- a/ecs/crm-datafetch/src/error/exceptions.py +++ b/ecs/crm-datafetch/src/error/exceptions.py @@ -30,16 +30,6 @@ class DataConvertException(MeDaCaCRMDataFetchException): pass -class TimeOutException(MeDaCaCRMDataFetchException): - """タイムアウトが発生した場合の例外""" - pass - - -class RetryExceededException(MeDaCaCRMDataFetchException): - """リトライ処理が発生した場合の例外""" - pass - - class SalesforceAPIException(MeDaCaCRMDataFetchException): """SalseforceのAPI実行失敗が発生した場合の例外""" pass diff --git a/ecs/crm-datafetch/src/fetch.py b/ecs/crm-datafetch/src/fetch.py index bac313fd..9670767a 100644 --- a/ecs/crm-datafetch/src/fetch.py +++ b/ecs/crm-datafetch/src/fetch.py @@ -1,7 +1,23 @@ -from src.util.logger import Logger +from requests.exceptions import ConnectTimeout, ReadTimeout +from tenacity import retry, stop_after_attempt +from tenacity.wait import wait_exponential +from src.util.logger import logger_instance as logger from src.constants import( FETCH_JP_NAME ) +from src.environments import( + CRM_AUTH_TIMEOUT, + CRM_GET_RECORD_COUNT_TIMEOUT, + CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT, + CRM_GET_RECORD_COUNT_RETRY_INTERVAL, + CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL, + CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL, + CRM_FETCH_RECORD_TIMEOUT, + CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT, + CRM_FETCH_RECORD_RETRY_INTERVAL, + CRM_FETCH_RECORD_RETRY_MIN_INTERVAL, + CRM_FETCH_RECORD_RETRY_MAX_INTERVAL +) from src.error.exceptions import( SalesforceAPIException, DataConvertException @@ -12,9 +28,6 @@ from src.salesforce.salesforce_api import( ) -logger = Logger().get_logger() - - def fetch_crm_data(target_object, last_fetch_datetime): # ① CRMデータ取得処理開始ログを出力する logger.info( @@ -25,31 +38,37 @@ def fetch_crm_data(target_object, last_fetch_datetime): last_fetch_datetime_from = last_fetch_datetime.last_fetch_datetime_from last_fetch_datetime_to = last_fetch_datetime.last_fetch_datetime_to + global count_contime_counter, count_readtime_counter, count_counter, data_contime_counter, data_readtime_counter, data_counter + count_contime_counter = 1 + count_readtime_counter = 1 + count_counter = 1 + data_contime_counter = 1 + data_readtime_counter = 1 + data_counter = 1 + try: # ② 取得対象オブジェクトの取得期間内のレコード件数を取得する logger.info(f'I-FETCH-02 [{object_name}] の件数取得を開始します') - saleforce_count = SalesForceCount() - record_count = saleforce_count.fetch_sf_count_retry( + record_count = fetch_sf_count_retry( object_name, last_fetch_datetime_from, last_fetch_datetime_to) logger.info(f'I-FETCH-03 [{object_name}] の件数:[{record_count}]') except Exception as e: raise SalesforceAPIException( - 'E-FETCH-01', FETCH_JP_NAME, f'[{object_name}] の件数取得に失敗しました [{e}]') + 'E-FETCH-01', FETCH_JP_NAME, f'[{object_name}] の件数取得に失敗しました エラー内容:[{e}]') try: # ③ 取得対象オブジェクトのレコードを取得する logger.info(f'I-FETCH-04 [{object_name}] のレコード取得を開始します') - saleforce_data = SalesForceData() - record_generator = saleforce_data.fetch_sf_data_retry( + record_generator = fetch_sf_data_retry( columns, object_name, last_fetch_datetime_from, last_fetch_datetime_to) except Exception as e: raise SalesforceAPIException( - 'E-FETCH-02', FETCH_JP_NAME, f'[{object_name}] のレコード取得に失敗しました [{e}]') + 'E-FETCH-02', FETCH_JP_NAME, f'[{object_name}] のレコード取得に失敗しました エラー内容:[{e}]') try: # ④ 取得対象オブジェクトをJSONに変換 @@ -62,10 +81,68 @@ def fetch_crm_data(target_object, last_fetch_datetime): except Exception as e: raise DataConvertException( - 'E-FETCH-03', FETCH_JP_NAME, f'[{object_name}] のレコードのJSON変換に失敗しました [{e}]') + 'E-FETCH-03', FETCH_JP_NAME, f'[{object_name}] のレコードのJSON変換に失敗しました エラー内容:[{e}]') # ⑤ CRMデータ取得処理終了ログを出力する logger.info(f'I-FETCH-06 [{object_name}] のレコード取得が成功しました') # ⑥ 次の処理へ移行する return sf_object_jsons + + +@retry(wait=wait_exponential(multiplier=CRM_GET_RECORD_COUNT_RETRY_INTERVAL, min=CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL, max=CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL), stop=stop_after_attempt(CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT)) +def fetch_sf_count_retry(object_name, last_update_datetime_from, last_update_datetime_to): + try: + global count_contime_counter, count_readtime_counter, count_counter + + saleforce_count = SalesForceCount() + return saleforce_count.fetch_sf_count(object_name, last_update_datetime_from, last_update_datetime_to) + + except ConnectTimeout as e: + if count_contime_counter < CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT: + count_contime_counter += 1 + logger.warn(f'W-FETCH-01 CRMの接続処理がタイムアウトしため、リトライします:[{CRM_AUTH_TIMEOUT}] エラー内容:[{e}]') + raise e + + except ReadTimeout as e: + if count_readtime_counter < CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT: + count_readtime_counter += 1 + logger.warn( + f'W-FETCH-02 [{object_name}] の件数取得処理がタイムアウトしたため、リトライします:[{CRM_GET_RECORD_COUNT_TIMEOUT}] エラー内容:[{e}]') + raise e + + except Exception as e: + if count_counter < CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT: + count_counter += 1 + logger.warn( + f'W-FETCH-03 [{object_name}] の件数取得に失敗したため、リトライします エラー内容:[{e}]') + raise e + + +@retry(wait=wait_exponential(multiplier=CRM_FETCH_RECORD_RETRY_INTERVAL, min=CRM_FETCH_RECORD_RETRY_MIN_INTERVAL, max=CRM_FETCH_RECORD_RETRY_MAX_INTERVAL), stop=stop_after_attempt(CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT)) +def fetch_sf_data_retry(columns, object_name, last_update_datetime_from, last_update_datetime_to): + try: + global data_contime_counter, data_readtime_counter, data_counter + + saleforce_data = SalesForceData() + return saleforce_data.fetch_sf_data(columns, object_name, last_update_datetime_from, last_update_datetime_to) + + except ConnectTimeout as e: + if data_contime_counter < CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT: + data_contime_counter += 1 + logger.warn(f'W-FETCH-04 CRMの接続処理がタイムアウトしため、リトライします:[{CRM_AUTH_TIMEOUT}] エラー内容:[{e}]') + raise e + + except ReadTimeout as e: + if data_readtime_counter < CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT: + data_readtime_counter += 1 + logger.warn( + f'W-FETCH-05 [{object_name}] のレコード取得処理がタイムアウトしたため、リトライします:[{CRM_FETCH_RECORD_TIMEOUT}] エラー内容:[{e}]') + raise e + + except Exception as e: + if data_counter < CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT: + data_counter += 1 + logger.warn( + f'W-FETCH-06 [{object_name}] のレコード取得に失敗したため、リトライします エラー内容:[{e}]') + raise e diff --git a/ecs/crm-datafetch/src/pre.py b/ecs/crm-datafetch/src/pre.py index 50071fe1..c8190f12 100644 --- a/ecs/crm-datafetch/src/pre.py +++ b/ecs/crm-datafetch/src/pre.py @@ -1,5 +1,5 @@ from datetime import datetime -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import( PRE_JP_NAME, YYYYMMDDTHHMMSSTZ @@ -18,9 +18,6 @@ from src.parser.json_parse import JsonParser from src.config.objects import FetchTargetObjects -logger = Logger().get_logger() - - def prepare_get_data(): # ① データ取得準備処理の開始ログを出力する diff --git a/ecs/crm-datafetch/src/process.py b/ecs/crm-datafetch/src/process.py index 5ccbd716..09d938af 100644 --- a/ecs/crm-datafetch/src/process.py +++ b/ecs/crm-datafetch/src/process.py @@ -8,13 +8,11 @@ from src.csvbk import backup_crm_csvdata # CS from src.upld import copy_crm_csvdata # CSVアップロード処理 from src.upd import updload_last_fetch_datetime # 前回取得日時ファイル更新 from src.end import updload_result_data # 取得処理実施結果アップロード処理 -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.error.exceptions import( MeDaCaCRMDataFetchException ) -logger = Logger().get_logger() - def main() -> None: try: @@ -108,14 +106,14 @@ def main() -> None: logger.info(f'I-CTRL-16 [{target_object.object_name}] 処理正常終了') except MeDaCaCRMDataFetchException as e: - logger.error(f'{e.error_id} {e}') - logger.exception( - f'I-ERR-03 [{object_info.get("object_name")}] の[{e.func_name}]でエラーが発生しました 次のオブジェクトの処理に移行します') + logger.info(f'{e.error_id} {e}') + logger.info( + f'I-ERR-03 [{object_info.get("object_name")}] の[{e.func_name}]でエラーが発生しました 次のオブジェクトの処理に移行します', exc_info=True) continue except Exception as e: - logger.exception( - f'I-ERR-04 [{object_info.get("object_name")}] の処理中に予期せぬエラーが発生しました 次のオブジェクトの処理に移行します', e) + logger.info( + f'I-ERR-04 [{object_info.get("object_name")}] の処理中に予期せぬエラーが発生しました 次のオブジェクトの処理に移行します', e, exc_info=True) continue # ④ すべてのオブジェクトの処理が完了したことと、オブジェクト毎の処理結果をログに出力する @@ -127,22 +125,22 @@ def main() -> None: # ⑥ 最終結果をチェックし、チェック結果をログに出力 if not all([v == 'success' for v in process_result.values()]): - logger.error('E-CTRL-01 一部のデータ取得に失敗しています。') + logger.error('E-CTRL-01 一部のデータ取得に失敗しています。詳細はログをご確認ください。') else: - logger.info('I-CTRL-18 すべてのデータの取得に成功しました。') + logger.info('I-CTRL-20 すべてのデータの取得に成功しました。') # ⑦ CRMデータ取得処理終了ログを出力する - logger.info('I-CTRL-20 CRMデータ取得処理を終了します') + logger.info('I-CTRL-21 CRMデータ取得処理を終了します') return exit(0) except MeDaCaCRMDataFetchException as e: - logger.error(f'{e.error_id} {e}') - logger.exception(f'I-ERR-01 [{e.func_name}]でエラーが発生したため、処理を終了します') + logger.error(f'E-ERR-01 [{e.func_name}]でエラーが発生したため、処理を終了します') + logger.exception(f'{e.error_id} {e}') return exit(0) except Exception as e: - logger.exception('I-ERR-02 予期せぬエラーが発生したため、処理を終了します', e) + logger.exception('E-ERR-02 予期せぬエラーが発生したため、処理を終了します', e) return exit(0) diff --git a/ecs/crm-datafetch/src/resbk.py b/ecs/crm-datafetch/src/resbk.py index 02b3c53b..21d516ef 100644 --- a/ecs/crm-datafetch/src/resbk.py +++ b/ecs/crm-datafetch/src/resbk.py @@ -1,4 +1,4 @@ -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import( RESBK_JP_NAME ) @@ -8,9 +8,6 @@ from src.error.exceptions import( from src.aws.s3 import BackupBucket -logger = Logger().get_logger() - - def backup_crm_data(object_name, sf_object_jsons, date_path): # ① CRM電文データバックアップ処理の開始ログを出力する logger.info(f'I-RESBK-01 [{object_name}] のCRM電文データバックアップ処理を開始します') diff --git a/ecs/crm-datafetch/src/salesforce/salesforce_api.py b/ecs/crm-datafetch/src/salesforce/salesforce_api.py index ad466782..0bce5675 100644 --- a/ecs/crm-datafetch/src/salesforce/salesforce_api.py +++ b/ecs/crm-datafetch/src/salesforce/salesforce_api.py @@ -1,7 +1,4 @@ -from tenacity import retry, stop_after_attempt, stop_after_delay -from tenacity.wait import wait_exponential from simple_salesforce import Salesforce -from src.util.async_retry import TimeoutManager, AsyncRetry from src.environments import( CRM_AUTH_DOMAIN, CRM_USER_NAME, @@ -17,13 +14,14 @@ from src.environments import( CRM_GET_RECORD_COUNT_RETRY_INTERVAL, CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL, CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL, - CRM_FETCH_RECORD_TIMEOUT, # CRMのレコード取得処理のタイムアウト秒数 + CRM_FETCH_RECORD_TIMEOUT, CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT, CRM_FETCH_RECORD_RETRY_INTERVAL, CRM_FETCH_RECORD_RETRY_MIN_INTERVAL, CRM_FETCH_RECORD_RETRY_MAX_INTERVAL ) + FETCH_SOQL = """SELECT {column_or_expression} FROM {object_name} WHERE SystemModStamp > {last_update_datetime_from} AND SystemModStamp <= {last_update_datetime_to} @@ -57,10 +55,6 @@ class SalesForceCount(): count_soql, conn_timeout=CRM_AUTH_TIMEOUT, read_timeout=CRM_GET_RECORD_COUNT_TIMEOUT) return count_res.get('records')[0].get('expr0') - @retry(wait=wait_exponential(multiplier=CRM_GET_RECORD_COUNT_RETRY_INTERVAL, min=CRM_GET_RECORD_COUNT_RETRY_MIN_INTERVAL, max=CRM_GET_RECORD_COUNT_RETRY_MAX_INTERVAL), stop=stop_after_attempt(CRM_GET_RECORD_COUNT_MAX_RETRY_ATTEMPT) | stop_after_delay(CRM_GET_RECORD_COUNT_TIMEOUT)) - def fetch_sf_count_retry(self, object_name, last_update_datetime_from, last_update_datetime_to): - return self.fetch_sf_count(object_name, last_update_datetime_from, last_update_datetime_to) - class SalesForceData(): def fetch_sf_data(self, columns, object_name, last_update_datetime_from, last_update_datetime_to): @@ -72,7 +66,3 @@ class SalesForceData(): ) self.__sf = SalesfoeceApi() return self.__sf.sf_query_all_iter(soql, conn_timeout=CRM_AUTH_TIMEOUT, read_timeout=CRM_FETCH_RECORD_TIMEOUT) - - @retry(wait=wait_exponential(multiplier=CRM_FETCH_RECORD_RETRY_INTERVAL, min=CRM_FETCH_RECORD_RETRY_MIN_INTERVAL, max=CRM_FETCH_RECORD_RETRY_MAX_INTERVAL), stop=stop_after_attempt(CRM_FETCH_RECORD_MAX_RETRY_ATTEMPT) | stop_after_delay(CRM_FETCH_RECORD_TIMEOUT)) - def fetch_sf_data_retry(self, columns, object_name, last_update_datetime_from, last_update_datetime_to): - return self.fetch_sf_data(columns, object_name, last_update_datetime_from, last_update_datetime_to) diff --git a/ecs/crm-datafetch/src/upd.py b/ecs/crm-datafetch/src/upd.py index 4e3cb90d..f8dd4350 100644 --- a/ecs/crm-datafetch/src/upd.py +++ b/ecs/crm-datafetch/src/upd.py @@ -1,5 +1,5 @@ import json -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.aws.s3 import ConfigBucket from src.constants import ( UPD_JP_NAME @@ -9,9 +9,6 @@ from src.error.exceptions import( ) -logger = Logger().get_logger() - - def updload_last_fetch_datetime(target_object, last_fetch_datetime): # ① 前回取得日時ファイル更新処理の開始ログを出力する logger.info( diff --git a/ecs/crm-datafetch/src/upld.py b/ecs/crm-datafetch/src/upld.py index 57e33e25..c3c3140f 100644 --- a/ecs/crm-datafetch/src/upld.py +++ b/ecs/crm-datafetch/src/upld.py @@ -1,4 +1,4 @@ -from src.util.logger import Logger +from src.util.logger import logger_instance as logger from src.constants import ( UPLD_JP_NAME ) @@ -14,9 +14,6 @@ from src.error.exceptions import( from src.aws.s3 import S3ResourceNonBucket -logger = Logger().get_logger() - - def copy_crm_csvdata(target_object, date_path): # ① CSVデータアップロード処理の開始ログを出力する logger.info( diff --git a/ecs/crm-datafetch/src/util/logger.py b/ecs/crm-datafetch/src/util/logger.py index d9892da8..ec0baf55 100644 --- a/ecs/crm-datafetch/src/util/logger.py +++ b/ecs/crm-datafetch/src/util/logger.py @@ -1,6 +1,9 @@ import logging from src.environments import LOG_LEVEL +for name in ["boto3", "botocore", "s3transfer", "urllib3"]: + logging.getLogger(name).setLevel(logging.WARNING) + class Logger(): __logger: logging.Logger @@ -27,3 +30,6 @@ class Logger(): def get_logger(self) -> logging.Logger: return self.__logger + + +logger_instance = Logger().get_logger()