J'ai un service fourni par une API REST, avec une bibliothèque Python l'enveloppant à l'aide de requêtes python.Services Twisted d'interconnexion serveur-client XML-RPC et REST
J'ai une interface utilisateur «bête» conçue par un tiers (pas Python) pour se connecter à un XML-RPC local.
Maintenant, je dois connecter les deux extrémités et transmettre les appels XML-RPC à l'API REST et renvoyer les résultats. Il est principalement asynchrone et ne dépend pas des résultats renvoyés à l'utilisateur en temps réel. La plupart des appels XML-RPC sont censés retourner immédiatement, mettre en file d'attente une tâche, et un autre appel interrogera les résultats plus tard. Les données sont stockées dans une base de données sqlite jusqu'à ce que nécessaire. Donc, j'ai décidé d'utiliser twisted.web.xmlrpc pour cette couche intermédiaire et d'utiliser la librairie basée sur les requêtes pour les appels distants et cela fonctionne très bien. Je crois que je bloque de temps à autre le loop principal de Twisted, mais ce n'est pas grave.
Le problème est que je dois aussi faire de gros téléchargements de fichiers de cette couche intermédiaire vers le serveur HTTP fournissant l'API REST. Je ne peux pas faire ces uploads en utilisant la librairie basée sur les requêtes car elle bloquera la boucle tordue jusqu'à ce que le téléchargement soit terminé. Je préfère ne pas utiliser le multithreading, et je ne veux vraiment pas réécrire la librairie basée sur les requêtes python que j'ai en tant que client tordu. Y a-t-il un moyen d'intégrer des requêtes dans le mainloop de twisted, ou toute autre solution raisonnable?
"Comment réparer mon code sans le changer?" C'est un dur. La plupart des correctifs impliquent au moins quelques modifications. –
Personne n'aime un smartass ... –
Désolé de vous avoir dérangé. Je vais essayer d'éviter vos questions à l'avenir. –