pytilpack.asyncio¶
pytilpack.asyncio
¶
非同期I/O関連。
Job()
¶
JobRunner(max_job_concurrency=8, poll_interval=1.0)
¶
非同期ジョブを最大 max_job_concurrency 並列で実行するクラス。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
max_job_concurrency
|
int
|
ジョブの最大同時実行数 |
8
|
poll_interval
|
float
|
ジョブ取得のポーリング間隔(秒) |
1.0
|
ソースコード位置: pytilpack/asyncio/jobrunner.py
run()
async
¶
poll()でジョブを取得し、並列実行上限内でジョブを実行する。
ソースコード位置: pytilpack/asyncio/jobrunner.py
shutdown()
¶
graceful_shutdown()
async
¶
新規ジョブ取得を停止し、実行中のジョブ完了を待ってから戻る
read_json(path, encoding='utf-8', errors='replace', strict=False, **kwargs)
async
¶
JSONファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
write_json(path, data, ensure_ascii=False, indent=None, separators=None, sort_keys=False, default=pytilpack.json.converter, encoding='utf-8', **kwargs)
async
¶
JSONファイルに非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
read_jsonc(path, encoding='utf-8', errors='replace', strict=False, **kwargs)
async
¶
JSONCファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
read_yaml(path, encoding='utf-8', errors='replace', strict=False, Loader=None)
async
¶
YAMLファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
read_yaml_all(path, encoding='utf-8', errors='replace', strict=False, Loader=None)
async
¶
YAMLファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
write_yaml(path, data, allow_unicode=True, width=99, default_style=None, default_flow_style=False, sort_keys=False, Dumper=None, encoding='utf-8', **kwargs)
async
¶
YAMLファイルに非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
write_yaml_all(path, data, allow_unicode=True, width=99, default_style=None, default_flow_style=False, sort_keys=False, Dumper=None, encoding='utf-8', **kwargs)
async
¶
YAMLファイルに非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
read_text(path, encoding='utf-8', errors='strict')
async
¶
ファイルからテキストを非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
write_text(path, data, encoding='utf-8', errors='strict')
async
¶
ファイルにテキストを非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
append_text(path, data, encoding='utf-8', errors='strict')
async
¶
ファイルにテキストを非同期で追記する。
ソースコード位置: pytilpack/asyncio/io_.py
read_bytes(path)
async
¶
ファイルからバイトを非同期で読み取る。
write_bytes(path, data)
async
¶
ファイルにバイトを非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
append_bytes(path, data)
async
¶
ファイルにバイトを非同期で追記する。
ソースコード位置: pytilpack/asyncio/io_.py
copy2(src, dst)
async
¶
ファイルを非同期でメタデータごとコピーする。
copytree(src, dst, dirs_exist_ok=False)
async
¶
ディレクトリツリーを非同期で再帰的にコピーする。
ソースコード位置: pytilpack/asyncio/io_.py
move(src, dst)
async
¶
ファイルまたはディレクトリを非同期で移動する。
delete_file(path)
async
¶
ファイルを非同期で削除する。
ソースコード位置: pytilpack/asyncio/io_.py
rmtree(path, ignore_errors=False)
async
¶
ディレクトリを非同期で再帰的に削除する。読み取り専用ファイルも削除する。
パスが存在しない場合は何もしない。
ソースコード位置: pytilpack/asyncio/io_.py
disk_usage(path)
async
¶
ディスク使用量を非同期で取得する。
get_size(path)
async
¶
ファイル・ディレクトリのサイズを非同期で取得する。
delete_empty_dirs(path, keep_root=True)
async
¶
指定したパス以下の空ディレクトリを削除する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
path
|
str | Path
|
対象のパス |
必須 |
keep_root
|
bool
|
Trueの場合、指定したディレクトリ自体は削除しない |
True
|
ソースコード位置: pytilpack/asyncio/io_.py
sync(src, dst, delete=False)
async
¶
コピー元からコピー先へ同期する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
src
|
str | Path
|
コピー元のパス |
必須 |
dst
|
str | Path
|
コピー先のパス |
必須 |
delete
|
bool
|
Trueの場合、コピー元に存在しないファイル・ディレクトリをコピー先から削除する |
False
|
ソースコード位置: pytilpack/asyncio/io_.py
delete_old_files(path, before, delete_empty_dirs=True, keep_root_empty_dir=True)
async
¶
指定した日時より古いファイルを削除し、空になったディレクトリも削除する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
path
|
str | Path
|
対象のパス |
必須 |
before
|
datetime
|
この日時より前に更新されたファイルを削除 |
必須 |
delete_empty_dirs
|
bool
|
Trueの場合、空になったディレクトリを削除 |
True
|
keep_root_empty_dir
|
bool
|
Trueの場合、指定したディレクトリ自体は削除しない |
True
|
ソースコード位置: pytilpack/asyncio/io_.py
ensure_async(func)
¶
関数が非同期関数でない場合、非同期関数に変換するデコレーター。
ソースコード位置: pytilpack/asyncio/functools_.py
run_sync(func)
¶
同期関数を非同期に実行するデコレーター。
quart.utils.run_syncのquart関係ない版。
ソースコード位置: pytilpack/asyncio/functools_.py
run_in_thread(func)
¶
非同期関数を非同期に実行するデコレーター。
awaitも使うけどブロッキング処理も含まれるような関数を雑に何とかするためのもの。 安全重視でスレッドを新たに作成するのでオーバーヘッドは大きめ。
ソースコード位置: pytilpack/asyncio/functools_.py
acquire_with_timeout(lock, timeout)
async
¶
ロックを取得し、タイムアウト時間内に取得できなかった場合はFalseを返す。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
lock
|
Lock | Semaphore
|
取得するロック。 |
必須 |
timeout
|
float
|
タイムアウト時間(秒)。 |
必須 |
戻り値:
| タイプ | デスクリプション |
|---|---|
AsyncGenerator[bool, None]
|
ロックが取得できた場合はTrue、取得できなかった場合はFalse。 |
ソースコード位置: pytilpack/asyncio/functools_.py
run(coro)
¶
非同期関数を実行する。
ソースコード位置: pytilpack/asyncio/functools_.py
get_task_id()
¶
get_task_id_hex()
¶
現在のタスクIDを16進数文字列で取得する。
戻り値:
| タイプ | デスクリプション |
|---|---|
str
|
タスクIDの16進数文字列。タスクが存在しない場合は"None"。 |
functools_
¶
非同期I/O関連。
ensure_async(func)
¶
関数が非同期関数でない場合、非同期関数に変換するデコレーター。
ソースコード位置: pytilpack/asyncio/functools_.py
run_sync(func)
¶
同期関数を非同期に実行するデコレーター。
quart.utils.run_syncのquart関係ない版。
ソースコード位置: pytilpack/asyncio/functools_.py
run_in_thread(func)
¶
非同期関数を非同期に実行するデコレーター。
awaitも使うけどブロッキング処理も含まれるような関数を雑に何とかするためのもの。 安全重視でスレッドを新たに作成するのでオーバーヘッドは大きめ。
ソースコード位置: pytilpack/asyncio/functools_.py
acquire_with_timeout(lock, timeout)
async
¶
ロックを取得し、タイムアウト時間内に取得できなかった場合はFalseを返す。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
lock
|
Lock | Semaphore
|
取得するロック。 |
必須 |
timeout
|
float
|
タイムアウト時間(秒)。 |
必須 |
戻り値:
| タイプ | デスクリプション |
|---|---|
AsyncGenerator[bool, None]
|
ロックが取得できた場合はTrue、取得できなかった場合はFalse。 |
ソースコード位置: pytilpack/asyncio/functools_.py
run(coro)
¶
非同期関数を実行する。
ソースコード位置: pytilpack/asyncio/functools_.py
io_
¶
非同期I/O関連。
read_json(path, encoding='utf-8', errors='replace', strict=False, **kwargs)
async
¶
JSONファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
write_json(path, data, ensure_ascii=False, indent=None, separators=None, sort_keys=False, default=pytilpack.json.converter, encoding='utf-8', **kwargs)
async
¶
JSONファイルに非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
read_jsonc(path, encoding='utf-8', errors='replace', strict=False, **kwargs)
async
¶
JSONCファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
read_yaml(path, encoding='utf-8', errors='replace', strict=False, Loader=None)
async
¶
YAMLファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
read_yaml_all(path, encoding='utf-8', errors='replace', strict=False, Loader=None)
async
¶
YAMLファイルから非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
write_yaml(path, data, allow_unicode=True, width=99, default_style=None, default_flow_style=False, sort_keys=False, Dumper=None, encoding='utf-8', **kwargs)
async
¶
YAMLファイルに非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
write_yaml_all(path, data, allow_unicode=True, width=99, default_style=None, default_flow_style=False, sort_keys=False, Dumper=None, encoding='utf-8', **kwargs)
async
¶
YAMLファイルに非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
read_text(path, encoding='utf-8', errors='strict')
async
¶
ファイルからテキストを非同期で読み取る。
ソースコード位置: pytilpack/asyncio/io_.py
write_text(path, data, encoding='utf-8', errors='strict')
async
¶
ファイルにテキストを非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
append_text(path, data, encoding='utf-8', errors='strict')
async
¶
ファイルにテキストを非同期で追記する。
ソースコード位置: pytilpack/asyncio/io_.py
read_bytes(path)
async
¶
ファイルからバイトを非同期で読み取る。
write_bytes(path, data)
async
¶
ファイルにバイトを非同期で書き込む。
ソースコード位置: pytilpack/asyncio/io_.py
append_bytes(path, data)
async
¶
ファイルにバイトを非同期で追記する。
ソースコード位置: pytilpack/asyncio/io_.py
copy2(src, dst)
async
¶
ファイルを非同期でメタデータごとコピーする。
copytree(src, dst, dirs_exist_ok=False)
async
¶
ディレクトリツリーを非同期で再帰的にコピーする。
ソースコード位置: pytilpack/asyncio/io_.py
move(src, dst)
async
¶
ファイルまたはディレクトリを非同期で移動する。
delete_file(path)
async
¶
ファイルを非同期で削除する。
ソースコード位置: pytilpack/asyncio/io_.py
rmtree(path, ignore_errors=False)
async
¶
ディレクトリを非同期で再帰的に削除する。読み取り専用ファイルも削除する。
パスが存在しない場合は何もしない。
ソースコード位置: pytilpack/asyncio/io_.py
disk_usage(path)
async
¶
ディスク使用量を非同期で取得する。
get_size(path)
async
¶
ファイル・ディレクトリのサイズを非同期で取得する。
delete_empty_dirs(path, keep_root=True)
async
¶
指定したパス以下の空ディレクトリを削除する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
path
|
str | Path
|
対象のパス |
必須 |
keep_root
|
bool
|
Trueの場合、指定したディレクトリ自体は削除しない |
True
|
ソースコード位置: pytilpack/asyncio/io_.py
sync(src, dst, delete=False)
async
¶
コピー元からコピー先へ同期する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
src
|
str | Path
|
コピー元のパス |
必須 |
dst
|
str | Path
|
コピー先のパス |
必須 |
delete
|
bool
|
Trueの場合、コピー元に存在しないファイル・ディレクトリをコピー先から削除する |
False
|
ソースコード位置: pytilpack/asyncio/io_.py
delete_old_files(path, before, delete_empty_dirs=True, keep_root_empty_dir=True)
async
¶
指定した日時より古いファイルを削除し、空になったディレクトリも削除する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
path
|
str | Path
|
対象のパス |
必須 |
before
|
datetime
|
この日時より前に更新されたファイルを削除 |
必須 |
delete_empty_dirs
|
bool
|
Trueの場合、空になったディレクトリを削除 |
True
|
keep_root_empty_dir
|
bool
|
Trueの場合、指定したディレクトリ自体は削除しない |
True
|
ソースコード位置: pytilpack/asyncio/io_.py
jobrunner
¶
非同期I/O関連。
Job()
¶
JobRunner(max_job_concurrency=8, poll_interval=1.0)
¶
非同期ジョブを最大 max_job_concurrency 並列で実行するクラス。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
max_job_concurrency
|
int
|
ジョブの最大同時実行数 |
8
|
poll_interval
|
float
|
ジョブ取得のポーリング間隔(秒) |
1.0
|
ソースコード位置: pytilpack/asyncio/jobrunner.py
run()
async
¶
poll()でジョブを取得し、並列実行上限内でジョブを実行する。
ソースコード位置: pytilpack/asyncio/jobrunner.py
shutdown()
¶
graceful_shutdown()
async
¶
新規ジョブ取得を停止し、実行中のジョブ完了を待ってから戻る
misc
¶
threadpool
¶
非同期I/O関連。
ThreadPool(max_workers)
¶
N個のスレッド上で非同期処理を実行するスレッドプール。
スレッドプールを初期化する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
max_workers
|
int
|
ワーカースレッド数(1以上) |
必須 |
ソースコード位置: pytilpack/asyncio/threadpool.py
__enter__()
¶
__exit__(exc_type, exc_val, exc_tb)
¶
submit(coro)
¶
コルーチンを実行するワーカーに送信する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
coro
|
Coroutine[Any, Any, T]
|
実行するコルーチン |
必須 |
戻り値:
| タイプ | デスクリプション |
|---|---|
Future[T]
|
結果を取得するためのFuture |
ソースコード位置: pytilpack/asyncio/threadpool.py
map(coros)
¶
複数のコルーチンをワーカーに送信する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
coros
|
Iterable[Coroutine[Any, Any, T]]
|
実行するコルーチンのイテラブル |
必須 |
戻り値:
| タイプ | デスクリプション |
|---|---|
list[Future[T]]
|
各コルーチンの結果を取得するためのFutureのリスト |
ソースコード位置: pytilpack/asyncio/threadpool.py
shutdown()
¶
ashutdown()
async
¶
__aenter__()
async
¶
__aexit__(exc_type, exc_value, traceback)
async
¶
__del__()
¶
デストラクタ。停止していないワーカーがいる場合は警告して停止シグナルを送る。
ソースコード位置: pytilpack/asyncio/threadpool.py
WorkerThread(name)
¶
専用のasyncioイベントループを実行するワーカースレッド。
ワーカースレッドを初期化する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
name
|
str
|
スレッド名 |
必須 |
ソースコード位置: pytilpack/asyncio/threadpool.py
start()
¶
ワーカースレッドを起動する。
ソースコード位置: pytilpack/asyncio/threadpool.py
submit(coro)
¶
コルーチンをイベントループに送信する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
coro
|
Coroutine[Any, Any, T]
|
実行するコルーチン |
必須 |
戻り値:
| タイプ | デスクリプション |
|---|---|
Future[T]
|
結果を取得するためのFuture |