Je suis actuellement en train d'essayer de supprimer un cadre python hérité (webware 0.8.1) et couche cherrypy 3.1.2 sur le dessus de celui-ci. Au lieu de convertir toutes les pages webware en pages cherrypy, je suis simplement en train de le traiter via des logiciels web et de le passer à cherrypy comme ça.Cherrypy suspendu sur le poste
def default(self, url, *suburl, **kwarg):
...snip...
strmout = DispatcherIO()
request = HTTPRequest(local_req)
transaction = self.create_transaction(request)
response = self.create_response(transaction, strmout)
transaction.setServlet(servlet)
transaction.awake()
transaction.respond()
return str(strmout)
Cela fonctionne très bien pour toute page qui ne comprend pas un POST. Mais avec une page, y compris un poste comme le login, cherrypy pendrait à:
request = HTTPRequest(local_req)
Ce qui appelle FieldStorage appeler le constructeur pour la cgi.FieldStorage parant. C'est là où il se bloque finalement. Toutefois, si je devais appuyer sur ctrl-c sur le terminal, il continuerait le traitement, puis se terminerait une fois la page chargée avec succès. Donc, avec la page de connexion, je voudrais cliquer sur "connexion", il se bloquerait, je vais ensuite appuyer sur ctrl-c sur le terminal, il me connectera, puis arrêter cherrypy.
J'ai trouvé que si j'utilisais cherrypy.engine.start au lieu de quickstart, cela ne déclencherait aucun gestionnaire de signal. Ce qui se passerait dans ce cas se traduirait par quelque chose de similaire au comportement précédent mais cherrypy continuerait à fonctionner.
Qu'est-ce qui pourrait causer ce problème? J'apprécierais vraiment toute aide. À votre santé.
Si cela ne tenait qu'à moi, je mettrais tout simplement à jour le webware à sa version actuelle qui est 1.02, mais malheureusement, ce n'est pas à moi de décider. Il n'est pas non plus possible de porter des logiciels web sur cherrypy car l'application est trop grande. Merci tout de même pour ta contribution! –