Docsの目次

並行処理

Nagiの非同期処理はTokio上で動きます。HTTPやタイマーを待っている間に、ほかの処理を進められます。使い方はasyncとscopeから確認してください。

SQLiteは専用のスレッドで処理します。重いCPU処理も、非同期処理を進めるスレッドを長く占有しないよう、別の処理枠へ渡します。

async def main() -> Result[unit, Error]:
    result = try await cpu_sum(100000)
    print(result)
    return ok(print("完了"))

cpu_sumはCPU処理を分けて実行するためのサンプルです。同時に実行するCPU処理は最大4件です。利用者が任意の関数をこの枠へ渡すAPIは未対応です。

このページの目次

データの受け渡し

複数のtaskへ、変更できる値を自動で共有することはありません。所有権を移して渡すか、sharedで読み取り用に共有します。借用したviewは別のtaskへ渡せません。

すでに始まったCPU処理は、呼び出し元をキャンセルしただけでは止まりません。長い処理には、その処理自身が停止の要求を確認する仕組みが必要です。

task数とHTTPの接続数は別です。待ち時間やメモリを含む測定結果は、測定結果と通信の負荷試験を参照してください。

Nagi 0.1のドキュメントこのページのソース