🔥

3/10~3/16で技術的にやったこと

2024/03/17に公開

履歴(ログ)を出力するための仕組みとして以下の方法があるらしい

やっぱり一回の処理でまとめてダウンロードしようとするとどうしてもログ系の処理だと重たくなりがち。
だから、肝心な処理はバッチにやらせておいて、作成できたらダウンロードできますよーって通知してあげるやり方ね。

バッチは非同期でやらせておけばいいからasyncioでとかでやってそれをthreadsでloopさせてあげれば、いいかなって思う。キューで開始を知らせて、そしたら処理を開始する。取得できたらキューで作成できた旨を知らせてそれを元にフロントに通知してあげてダウンロードできるようにする。
けど、ログの取得自体が多いってことはログのファイルも大きくなると思う。
ダウンロードするファイル自体が大きいのは仕方ないで問題なのかな・・・

実装イメージ

loop = asyncio.get_event_loop()    
loop.run_until_complete(ポーリングするメソッド())

def ポーリングするメソッド()
    threads = []
    while threads:
        for thread in threads:

Discussion