処理エンジン追加手順
本項では、データファイルの処理エンジン(Farmnote様開発モジュール)の追加手順を記載します。
1.モジュール調整
バッチ処理ではcli.pyを調整したengine.pyを外部のworker.py経由で呼び出して処理を行います。 cli.pyをコピーし、engine.pyを作成してください。
- cli.py(調整前プログラム)
def full_update(aFarmname: str) -> None:
(省略)
def cloud_update(aFarmname: str) -> None:
(省略)
if __name__ == "__main__":
farmers_list = [
(省略)
]
for name in farmers_list:
full_update(name)
- engine.py
class Engine(EngineBase):
def __init__(self, farmid):
self.farmid = farmid
self.parent_dir = str(pathlib.Path(__file__).resolve().parent.parent)
def get_rawdata_dir(self) -> str:
return self.parent_dir + "/raw-data/" + self.farmid
def get_ui_dir(self) -> str:
return self.parent_dir + "/ui/" + self.farmid
def get_tables_dir(self) -> str:
return self.parent_dir + "/tables/" + self.farmid
def get_version_api(self) -> str:
version_str = "1"
return version_str
def run(self):
self.full_update(self.farmid)
def full_update(self, aFarmname: str) -> None:
(変更なし)
def cloud_update(self, aFarmname: str) -> None:
(変更なし)
if __name__ == "__main__":
pass
調整内容
- ファイル名cli.pyからengine.pyをコピー作成
- EngineBaseを基底クラスとしたEngineクラスに変換
- Engineクラス内に下記の6つメソッドを追加
- get_version_apiのAPIバージョン番号を設定
(get_version_api以外のメソッドは、上記のengine.pyの内容のままコピーしてください)
__init__
get_rawdata_dir
get_ui_dir
get_tables_dir
get_version_api
run
調整後のプログラム構成
(バージョン名ディレクトリ)/
└─data_process/
│ engine.py
├─breeding_pipeline/
├─farmnote_cloud_pipeline/
├─json_dump/
├─setting/
├─validation/
└─zoetis_pipeline/
raw-data,tables,uiディレクトリは不要です
Info
バージョン名は任意で決定してください。job登録の際に指定する名称となります。
2. 開発環境モジュール配置
調整したengineプログラム群をSCPで開発環境サーバーに配置します。
| 項目名 | 値 |
|---|---|
| IPaddress | 34.67.210.70 |
| ログイン用秘密鍵 | farmnote-gene-dev_fngene.ppk |
| User | fngene |
| Passphrase | fngene |
| 配置ディレクトリ | /usr/local/fngene/batch/engine/ |
3. 開発環境データファイル配置
追加したエンジンで処理するデータファイルを、管理画面(開発環境)から登録してください。
4. 開発環境ジョブ登録
管理画面のジョブ登録機能(開発環境)で、決定したバージョン名を指定してジョブを新規登録してください。
5. 動作確認
ジョブは数分で起動され、処理されます。(処理時間はエンジンの処理内容によります)
正しく処理されているか確認してください。
処理結果の確認には下記の方法があります。
-
ジョブの処理ステータス
管理画面の組織一覧で最新ジョブの処理結果ステータスが表示されます。(要確認)
<判定内容>- プロセスが正常に終了したか
-
画面の表示内容
ユーザー画面で出力結果の内容を確認します。
<判定内容>- uiフォルダに出力された内容が反映されているか
- 出力された内容が正しいか
-
処理対象ファイル
Firebase Storageにアーカイブされている処理対象ファイルを確認します。
(1) 管理画面で対象組織のジョブ一覧を表示し、対象ジョブのIDを確認
(2) Firebase管理コンソールでStorageのアーカイブフォルダを表示し、対象のジョブIDフォルダ配下を確認
<判定内容>- 処理対象となったデータファイルに過不足がないか
-
プロセスログ
engine.py(調整前:cli.py)が出力した内容をログファイルから確認します。
(1) サーバーにターミナルログイン
(2) コマンドで/var/log/fngene/最新ログファイルの内容を確認してください。
<確認内容>- 処理詳細ログ
ログ確認例
cd /var/log/fngene
ls -lt (最新ログファイル名確認)
view (最新ログファイル名)
ログ出力サンプル
2022-05-20T07:01:02.133334+09:00 /usr/local/fngene/batch/process_manager.py [INFO] process_manager start.
2022-05-20T07:01:02.177917+09:00 /usr/local/fngene/batch/process_manager.py [INFO] PROCESS START - ID:59 - FarmID:2QqfX3J4xmQ4hWNutnxVJ3Fp9653 - Engine_Version:v002 - PatternID:1 - Regist_Count:35
Match Files :11:11
GCS File DL: 20220513/breeding_ledger_web/calving_list_0279693601_20220405.xls
GCS File DL: 20220513/breeding_ledger_web/dhi_check_0279693601_20211110_20220124.xls
GCS File DL: 20220513/breeding_ledger_web/edit_chardata_0279693601_20220405.xls
GCS File DL: 20220513/breeding_ledger_web/quicklist_0279693601_ikusei_20220405.xls
GCS File DL: 20220513/breeding_ledger_web/quicklist_0279693601_keisan_20220405.xls
GCS File DL: 20220513/zoetis_web/ReportReliability2022-03-02.csv
GCS File DL: 20220513/zoetis_web/ReportNetMerit2022-03-02.csv
GCS File DL: 20220513/zoetis_web/ReportMatingReport2022-03-02.csv
GCS File DL: 20220513/zoetis_web/ReportCoreTraits2022-03-02.csv
GCS File DL: 20220513/zoetis_submitted/20211012_test_cow.csv
GCS File DL: 20220513/zoetis_direct/Zoetis_Tomizawa Farm_CLARIFIDE Dairy Report_20220105_110526.xls
GCS File DL: 20220428/zoetis_web/ReportReliability2022-03-02.csv
GCS File DL: 20220428/zoetis_web/ReportNetMerit2022-03-02.csv
GCS File DL: 20220428/zoetis_web/ReportMatingReport2022-03-02.csv
GCS File DL: 20220428/zoetis_web/ReportCoreTraits2022-03-02.csv
GCS File DL: 20220428/zoetis_submitted/20211012_test_cow.csv
GCS File DL: 20220428/zoetis_direct/Zoetis_Tomizawa Farm_CLARIFIDE Dairy Report_20220105_110526.xls
-----------------------------------
繁殖台帳
['/usr/local/fngene/batch/engine/v002/raw-data/2QqfX3J4xmQ4hWNutnxVJ3Fp9653/zoetis_submitted/20211012_test_cow.csv']
zoetis
WARNING *** file size (384960) not 512 + multiple of sector size (512)
WARNING *** file size (384960) not 512 + multiple of sector size (512)
WARNING *** file size (384960) not 512 + multiple of sector size (512)
WARNING *** file size (384960) not 512 + multiple of sector size (512)
WARNING *** file size (384960) not 512 + multiple of sector size (512)
WARNING *** file size (384960) not 512 + multiple of sector size (512)
alpha_s1_casein ayrshire/red_breeds% ... sample_status reported_date
0 BC* 0 ... from search point 2022/01/04
1 BB* 0 ... from search point 2022/01/04
:
:
:
Info
上記で確認できるログは、ジョブリスト取得APIでも取得可能です。(要画面対応)
6. 本番環境への反映
本番環境で手順2.3.4を行い、本番環境に反映します。
本番環境サーバー
| 項目名 | 値 |
|---|---|
| IPaddress | 34.71.180.95 |
| ログイン用秘密鍵 | farmnote-gene-prod_fngene.ppk |
| User | fngene |
| Passphrase | fngene |
| 配置ディレクトリ | /usr/local/fngene/batch/engine/ |
本番環境Firebase Storageアーカイブフォルダ (処理結果確認用)
以上でエンジンの追加は完了です。