指摘事項修正
This commit is contained in:
parent
1ae009115d
commit
c290448730
@ -1,8 +1,8 @@
|
|||||||
# 実消化&アルトマーク 月次バッチ
|
# 日次バッチ処理前DBダンプ取得
|
||||||
|
|
||||||
## 概要
|
## 概要
|
||||||
|
|
||||||
実消化&アルトマークの月次バッチ処理。
|
日次バッチ処理前DBダンプ取得処理。
|
||||||
|
|
||||||
## 環境情報
|
## 環境情報
|
||||||
|
|
||||||
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
- VSCode 上で「F5」キーを押下すると、バッチ処理が起動する。
|
- VSCode 上で「F5」キーを押下すると、バッチ処理が起動する。
|
||||||
- 「entrypoint.py」が、バッチ処理のエントリーポイント。
|
- 「entrypoint.py」が、バッチ処理のエントリーポイント。
|
||||||
- 実際の処理は、「src/jobctrl_monthly.py」で行っている。
|
- 実際の処理は、「src/jobctrl_dbdump.py」で行っている。
|
||||||
|
|
||||||
|
|
||||||
## フォルダ構成(工事中)
|
## フォルダ構成(工事中)
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
"""実消化&アルトマーク 月次バッチのエントリーポイント"""
|
"""実消化&アルトマーク 日次バッチ処理前DBダンプ取得のエントリーポイント"""
|
||||||
from src import jobctrl_dbdump
|
from src import jobctrl_dbdump
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@ -58,7 +58,7 @@ def update_dump_status_kbn_in_processing() -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def update_dump_status_kbn_in_error() -> None:
|
def update_dump_status_kbn_error() -> None:
|
||||||
"""dump取得状況区分をエラーに更新する
|
"""dump取得状況区分をエラーに更新する
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
@ -83,7 +83,7 @@ def update_dump_status_kbn_in_error() -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def update_dump_status_kbn_in_complete() -> None:
|
def update_dump_status_kbn_complete() -> None:
|
||||||
"""dump取得状況区分を正常終了に更新する
|
"""dump取得状況区分を正常終了に更新する
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
|
|||||||
@ -1,29 +0,0 @@
|
|||||||
class BatchContext:
|
|
||||||
__instance = None
|
|
||||||
__syor_date: str # 処理日(yyyy/mm/dd形式)
|
|
||||||
__is_arisj_output_day: bool # 月次バッチ起動日フラグ
|
|
||||||
|
|
||||||
def __init__(self) -> None:
|
|
||||||
self.__is_arisj_output_day = False
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_instance(cls):
|
|
||||||
if cls.__instance is None:
|
|
||||||
cls.__instance = cls()
|
|
||||||
return cls.__instance
|
|
||||||
|
|
||||||
@property
|
|
||||||
def syor_date(self):
|
|
||||||
return self.__syor_date
|
|
||||||
|
|
||||||
@syor_date.setter
|
|
||||||
def syor_date(self, syor_date_str: str):
|
|
||||||
self.__syor_date = syor_date_str
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_arisj_output_day(self):
|
|
||||||
return self.__is_arisj_output_day
|
|
||||||
|
|
||||||
@is_arisj_output_day.setter
|
|
||||||
def is_arisj_output_day(self, flag: bool):
|
|
||||||
self.__is_arisj_output_day = flag
|
|
||||||
@ -4,11 +4,8 @@ from sqlalchemy.engine.url import URL
|
|||||||
from tenacity import retry, stop_after_attempt, wait_exponential
|
from tenacity import retry, stop_after_attempt, wait_exponential
|
||||||
|
|
||||||
from src.error.exceptions import DBException
|
from src.error.exceptions import DBException
|
||||||
from src.logging.get_logger import get_logger
|
|
||||||
from src.system_var import environment
|
from src.system_var import environment
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class Database:
|
class Database:
|
||||||
"""データベース操作クラス"""
|
"""データベース操作クラス"""
|
||||||
@ -74,9 +71,7 @@ class Database:
|
|||||||
min=environment.DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS,
|
min=environment.DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS,
|
||||||
max=environment.DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS
|
max=environment.DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS
|
||||||
),
|
),
|
||||||
stop=stop_after_attempt(environment.DB_CONNECTION_MAX_RETRY_ATTEMPT),
|
stop=stop_after_attempt(environment.DB_CONNECTION_MAX_RETRY_ATTEMPT))
|
||||||
retry_error_cls=DBException
|
|
||||||
)
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
"""
|
"""
|
||||||
DBに接続します。接続に失敗した場合、リトライします。
|
DBに接続します。接続に失敗した場合、リトライします。
|
||||||
|
|||||||
@ -6,8 +6,8 @@ import subprocess
|
|||||||
import textwrap
|
import textwrap
|
||||||
|
|
||||||
from src.batch.batch_functions import (get_batch_statuses,
|
from src.batch.batch_functions import (get_batch_statuses,
|
||||||
update_dump_status_kbn_in_complete,
|
update_dump_status_kbn_complete,
|
||||||
update_dump_status_kbn_in_error,
|
update_dump_status_kbn_error,
|
||||||
update_dump_status_kbn_in_processing)
|
update_dump_status_kbn_in_processing)
|
||||||
from src.error.exceptions import BatchOperationException
|
from src.error.exceptions import BatchOperationException
|
||||||
from src.logging.get_logger import get_logger
|
from src.logging.get_logger import get_logger
|
||||||
@ -28,12 +28,12 @@ def exec():
|
|||||||
|
|
||||||
# 日次バッチ処理中の場合、処理は行わない
|
# 日次バッチ処理中の場合、処理は行わない
|
||||||
if batch_processing_flag == constants.BATCH_ACTF_BATCH_IN_PROCESSING:
|
if batch_processing_flag == constants.BATCH_ACTF_BATCH_IN_PROCESSING:
|
||||||
logger.error('日次バッチ処理中の為、処理を終了')
|
logger.error('日次バッチ処理中の為、日次バッチ処理前DBダンプ取得を終了します。')
|
||||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
return constants.BATCH_EXIT_CODE_SUCCESS
|
||||||
|
|
||||||
# dump処理状態区分が処理中またはエラーの場合、処理は行わない
|
# dump処理状態区分が処理中またはエラーの場合、処理は行わない
|
||||||
if dump_status_kbn == constants.DUMP_STATUS_KBN_PROCESSED or dump_status_kbn == constants.DUMP_STATUS_KBN_ERROR:
|
if dump_status_kbn == constants.DUMP_STATUS_KBN_PROCESSED or dump_status_kbn == constants.DUMP_STATUS_KBN_ERROR:
|
||||||
logger.error(f'dump処理状態区分が実行不可な状態の為、処理を終了 dump処理状態区分={dump_status_kbn}')
|
logger.error(f'ダンプ取得が実行不可能な状態の為、日次バッチ処理前DBダンプ取得を終了します。 dump処理状態区分={dump_status_kbn}')
|
||||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
return constants.BATCH_EXIT_CODE_SUCCESS
|
||||||
|
|
||||||
# dump処理状態区分を処理中に更新
|
# dump処理状態区分を処理中に更新
|
||||||
@ -74,6 +74,7 @@ def exec():
|
|||||||
'--set-gtid-purged=OFF',
|
'--set-gtid-purged=OFF',
|
||||||
environment.DB_SCHEMA
|
environment.DB_SCHEMA
|
||||||
]
|
]
|
||||||
|
|
||||||
mysqldump_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
mysqldump_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
# gzipコマンドを実行してdump結果を圧縮する
|
# gzipコマンドを実行してdump結果を圧縮する
|
||||||
gzip_process = subprocess.Popen(['gzip'], stdin=mysqldump_process.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
gzip_process = subprocess.Popen(['gzip'], stdin=mysqldump_process.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
@ -102,7 +103,7 @@ def exec():
|
|||||||
|
|
||||||
# dump処理状態区分を正常終了に更新
|
# dump処理状態区分を正常終了に更新
|
||||||
try:
|
try:
|
||||||
update_dump_status_kbn_in_complete()
|
update_dump_status_kbn_complete()
|
||||||
except BatchOperationException as e:
|
except BatchOperationException as e:
|
||||||
logger.exception(f'dump処理状態区分更新(処理中→正常終了) エラー(異常終了):{e}')
|
logger.exception(f'dump処理状態区分更新(処理中→正常終了) エラー(異常終了):{e}')
|
||||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
return constants.BATCH_EXIT_CODE_SUCCESS
|
||||||
@ -113,7 +114,7 @@ def exec():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
# dump処理状態区分をエラーに更新
|
# dump処理状態区分をエラーに更新
|
||||||
try:
|
try:
|
||||||
update_dump_status_kbn_in_error()
|
update_dump_status_kbn_error()
|
||||||
except BatchOperationException as e:
|
except BatchOperationException as e:
|
||||||
logger.exception(f'dump処理状態区分更新(処理中→エラー) エラー(異常終了):{e}')
|
logger.exception(f'dump処理状態区分更新(処理中→エラー) エラー(異常終了):{e}')
|
||||||
return constants.BATCH_EXIT_CODE_SUCCESS
|
return constants.BATCH_EXIT_CODE_SUCCESS
|
||||||
|
|||||||
@ -9,6 +9,7 @@ DB_SCHEMA = os.environ['DB_SCHEMA']
|
|||||||
|
|
||||||
# AWS
|
# AWS
|
||||||
JSKULT_BACKUP_BUCKET = os.environ['JSKULT_BACKUP_BUCKET']
|
JSKULT_BACKUP_BUCKET = os.environ['JSKULT_BACKUP_BUCKET']
|
||||||
|
DUMP_BACKUP_FOLDER = os.environ['DUMP_BACKUP_FOLDER']
|
||||||
|
|
||||||
# 初期値がある環境変数
|
# 初期値がある環境変数
|
||||||
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
|
LOG_LEVEL = os.environ.get('LOG_LEVEL', 'INFO')
|
||||||
@ -17,4 +18,3 @@ DB_CONNECTION_RETRY_INTERVAL_INIT = int(os.environ.get('DB_CONNECTION_RETRY_INTE
|
|||||||
DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MIN_SECONDS', 5))
|
DB_CONNECTION_RETRY_INTERVAL_MIN_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MIN_SECONDS', 5))
|
||||||
DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MAX_SECONDS', 50))
|
DB_CONNECTION_RETRY_INTERVAL_MAX_SECONDS = int(os.environ.get('DB_CONNECTION_RETRY_MAX_SECONDS', 50))
|
||||||
|
|
||||||
DUMP_BACKUP_FOLDER = os.environ['DUMP_BACKUP_FOLDER']
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user