最終的なイメージ
- event_loop.pyが常に動いている。ここに変更は永遠に加えない
- 開発者はアプリの新規追加・編集・更新が自由に行える。event_loop.pyは変更を自動的に読み込む。
- アプリ間のやり取りはevent_loop.pyを通して行われる
- 各アプリはevent_busから呼び出されるもののあれば、手動で呼び出されるものもある
- 各アプリは非同期的に実行される
TODO
-
apps/内に新しく.pyファイルが追加されたときにPythonは認識するかチェック- 認識するようにevent_loop.pyを更新。import_moduleを利用して、動的にapps内の関数をimportするようにした。
- これに伴って、新しいappsが追加されたら、registered_eventを更新するようにした
- apps/内のスクリプトが更新された後、それが認識されるのかチェック
- サブプロセス?的な何かに各アプリの処理を投げる
- 割り込み処理の実現
- イメージはCtrl+Cの強制終了の読み取り。これもevent_loop.py上のイベントとして扱いたい。
- event registerの動的更新の実装
- これ本当に必要か?
- 必要なケースの具体例挙げ
ディレクトリ構造
event_bus/
|
|- event_loop.py
|- call_apps.py
|- <some other config>
|
|- apps/
|- dummy_trigger.py
|- print_event.py
|- <other apps coming soon>
|
|- new_event_dir/
|- 2023_05_14_10_21_19_704567_526212028_dummy_trigger.txt (サンプル)
|- <other apps event coming soon>
|
|- old_event_dir/
|- 2023_05_13_17_46_05_903853_210209713_dummy_trigger.txt (サンプル)
|- 2023_05_13_17_46_06_616911_073043986_dummy_trigger.txt (サンプル)
|- <other apps event coming soon>
|
|- registered_event/
|- 2023_05_13_18_19_37_203768_158712787.csv (サンプル)
|- 2023_05_13_18_22_37_302726_415965892.csv (サンプル)
|- ...
|
|- src/
|- get_random_int.py
|- get_absolute_path.py
|- <other common modules>
|