pythonのmultiprocessing処理
ファイルダウンロードの場合、
- A処理は、ラッパーページを出す;
- B処理はファイルの状態を監視する(ダウンロード可能となるとリンクを出す)
このように書くと、メソッドAが別途で実行されます。
p = Process(target=メソッドA, args=(引数1, 引数2,))
p.start()
Bのほうは、jquery(ajax)を利用して、繰り返して監視する
HTML |
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script type="text/javascript"> window.onload=showPro; var bar = 1; var my_time; var file_name = "{{filename}}"; var flg; function showPro(){ var pro = document.getElementById("div2"); pro.style.width = bar+"px"; bar = bar+5; my_time = setTimeout("showPro()",500); $("p").hide(); $.ajax({ url: "/download_file/", type: "POST", data: null, success: function (data) { data = JSON.parse(data); if (data["flg"] == 1) { pro.style.width = '100%'; clearTimeout(my_time); $("p").show(); } } }); } </script> |
Forkは以下のように有効ですが、Windows環境で使えないのは残念
new_pid = os.fork()
if new_pid == 0:
return output_html(request, filepath)
else:
その他の処理