LoginSignup
0
0

Event Busを作ってみよう TODO編

Last updated at Posted at 2023-07-17

最終的なイメージ

  • 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>
|
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0