dataware-tools / api-file-provider

0 stars 0 forks source link

Fix the bug that files were not streamed asynchronously #25

Closed d-hayashi closed 3 years ago

d-hayashi commented 3 years ago

What?

Fix dataware-tools/dataware-tools#69

Why?

To prevent request timeouts

WatanabeToshimitsu commented 3 years ago

一応色々調べてみたんですが,未だに「何故ファイルを配信する処理にスレッドが占有されてしまうのか」が分かっておらず... responder やら Starlette のソースコードを見てみても,ネットワークストリームを通して通信する部分は非同期処理になっているようで,仮にファイル送信中にリクエストが来ても,それをファイルの送信と並行して処理できるように思えます この辺りに関して,理解できそうな記述ご存知でしょうか?

d-hayashi commented 3 years ago

よくよく調べてみたら単純に _shout_stream 関数の中で非同期処理に対応していない open() 関数を使っていたがためにファイルのダウンロード部分が非同期処理になっていなかったのが原因でした。。

(参考) https://www.twilio.com/blog/working-with-files-asynchronously-in-python-using-aiofiles-and-asyncio

hdl-service commented 3 years ago

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: d-hayashi, WatanabeToshimitsu

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files: - ~~[OWNERS](https://github.com/dataware-tools/api-file-provider/blob/master/OWNERS)~~ [WatanabeToshimitsu,d-hayashi] Approvers can indicate their approval by writing `/approve` in a comment Approvers can cancel approval by writing `/approve cancel` in a comment