(Attention billet légèrement technique)

Les échanges avec Amazon sont... très lents ! En effet, les données sont renvoyées sous forme de page (bien que cela soit complètement transparent avec l'utilisation de PyAWS), chaque page contenant 10 produits maximum, et l'intervalle entre deux requête est... d'une seconde. Pour 100 produits on se retrouve donc avec 10 pages, soit donc minimum 10 secondes rien que pour la récupération des données. C'est donc quelque chose qui ne peut être valable pour un site qui se veut un tant soit peu réactif. La solution

La solution est donc de déporter les mises à jour des données à partir des fournisseurs dans un autre processus, et afficher au client qu'une mise à jour est en cours, avec un lien pour rafraichir la page. On peut envisager de plus d'afficher un état d'avancement (via ajax par exemple).

Restait à trouver un moyen de faire un démon django qui se chargerait de lire dans la base et effectuerait les recherches demandées.

Après quelques recherches, j'ai trouvé, grâce à cet article, un projet nommé Pyro, qui, via ses OneWay permet justement de faire ce dont j'ai besoin (à noter que j'aurais pu faire un simple démon mais Pyro est multi-thread... et déjà codé :) )

Lors d'une requête Amazon, au lieu de la gérer dans le processus, je demande au démon Pyro de la faire, et je continue mon travail sans me soucier de ce qu'il fait. Je n'ai qu'à afficher l'état d'avancement dans le navigateur.