etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
198 stars 30 forks source link

Télécharger les détails des ressources historisées en streaming #4221

Closed AntoineAugusti closed 2 months ago

AntoineAugusti commented 2 months ago

Fixes #4207

4193, le retour. Reprend l'implémentation initiale de #4194 mais limite ceci uniquement à resource_history (pas de validations/métadonnées), passe à du streaming pour récupérer les données depuis la base de données et renvoie le résultat en plusieurs chunks HTTP.

Ce changement est fait dans le 2nd commit uniquement pour faciliter la relecture.

Testé avec succès en local sur plusieurs gros JDDs.

AntoineAugusti commented 2 months ago

Je me suis posé la question de clore la connexion.

https://hexdocs.pm/plug/Plug.Conn.html#send_chunked/2 n'indique pas qu'il faut réaliser cette étape. Il est indiqué que https://hexdocs.pm/plug/Plug.Conn.html#send_resp/1 va même lever une erreur quand l'état est chunked.

C'est indiqué comme un état final

The connection state is used to track the connection lifecycle. It starts as :unset but is changed to :set (via resp/3) or :set_chunked (used only for before_send callbacks by send_chunked/2) or :file (when invoked via send_file/3). Its final result is :sent, :file, :chunked or :upgraded depending on the response model.

Si tu trouves la partie exacte qui sait quand il n'y aura plus de chunks je prends !