botを作るためのフレームワークです
Project description
Ex-Machina
python で bot 書くためのフレームワーク
インストール
using pip
pip install -U exmachina
using poetry
poetry add exmachina@latest
使い方
from exmachina import Event, Machina
bot = Machina()
bot.create_concurrent_group(
name='limit',
entire_calls_limit=4,
time_calls_limit=3,
time_limit=1,
)
@bot.emit(interval='1s')
async def emit(event: Event):
res = await event.execute('execute')
assert res == 42
# or
res = await execute()
assert res == 42
@bot.execute(concurrent_groups=['limit'])
async def execute():
return 42
Emit
定期的に実行したい関数を登録するためのデコレータ
name
- Emitでユニークな名前をつける
- 省略した場合はデコレートした関数名になる
count
- 実行回数. これで指定した回数実行した後、
alive
がFalse
になる None
を指定した場合は無限回実行する- デフォルトは
None
- 実行回数. これで指定した回数実行した後、
interval
- ループのインターバル
1s
や1d4h
などと指定できる - デフォルトは
0s
. つまり待機しない
- ループのインターバル
alive
True
の場合、botの実行時に自動で実行される- 手動で起動する場合は
False
を指定する - デフォルトは
True
Concurrent Group
時間あたりや同時実行数を制限するグループ
作成したグループは後述のExecuteに対して設定できる
name
- 必須プロパティ. Concurrent Groupでユニークな名前をつける
entire_calls_limit
- 全体の実行数制限
- このグループに所属するExecuteの並列実行数
None
を指定した場合、無制限- デフォルトは
None
time_calls_limit
- このグループに所属する
time_limit
秒あたりに実行"開始"できるExecuteの数 - デフォルトは
1
- このグループに所属する
time_limit
time_calls_limit
の制限時間(秒)- デフォルト
0
. つまり、制限なし
Execute
Emitから呼び出される、一回きりのタスク
Emitは主にbotの制御を行い、Executeは計算処理や外部との通信を行う処理を書く想定
name
- Executeでユニークな名前をつける
- 省略した場合はデコレートした関数名になる
concurrent_groups
- executeの所属するconcurrent_groupを配列で指定する
- デフォルトは
[]
Event
Emitする関数に渡されるオブジェクト
- 停止中の別のEmit起動や停止
- Executeの実行
- ループの状態を確認できる属性を持つ
Emitの起動と停止
event.start('emit_name')
event.stop('emit_name')
Executeの実行
event.execute('execute_name', *args, **kwargs)
event.executeはexecuteのTaskを返す
属性
event.epoch # emitのループ回数
event.previous_execution_time # 直前のループの処理時間
event.count # emitの残りの実行回数(未指定の場合はNone)
開発
init
poetry install
poetry shell
fmt
poe fmt
lint
poe lint
test
poe test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
exmachina-0.1.6.tar.gz
(11.8 kB
view hashes)
Built Distribution
exmachina-0.1.6-py3-none-any.whl
(12.1 kB
view hashes)
Close
Hashes for exmachina-0.1.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b94c9dcf8bdf3e26d122b7d4b3e52255edec7a14c797f1c07871c039cddbb0a2 |
|
MD5 | 3d8e98499eab36f6e100170811362a7f |
|
BLAKE2b-256 | 4dc7167de754491f9c9062a6e72e8ab8be938b2d5e1bcd7b7c8275d30d673f76 |