J'exécute une application django sur twisted en utilisant les scripts django-on-twisted à partir de ce site .
Toutes les demandes sont traitées par un serveur nginx qui renvoie les demandes pertinentes à twisted. J'ai une configuration d'url pour une API, qui ne fait que recevoir des requêtes get et effectue un traitement sur les paramètres get avant d'envoyer une réponse. Cependant, quand un client spécifique frappe l'API, le serveur twisted s'arrête tout simplement. Le journal de Nginx est collé ci-dessous :
the.ip.of.client - - [21/Apr/2012:11:30:36 -0400] "GET /api/url/?get=params&more=params HTTP/1.1" 499 0 "-" "Java/1.6.0_24"
Les journaux de twisted ne montrent rien mais twisted cesse de fonctionner à ce stade. D'après le code d'erreur 499, je suppose que le client a fermé la connexion de manière inattendue, ce qui ne me pose aucun problème. Que le client reçoive la réponse ou non n'est pas important pour moi. Voici la vue django concernée :
def api_url(request):
if request.GET:
get_param = request.GET.get('get', [''])[0]
more_param = request.GET.get('more', [''])[0]
#some processing here based on the get params
return HttpResponse('OK')
else:
raise Http404
La demande du client est une demande valide et n'affecte pas le traitement de manière négative. Je l'ai testée à partir du shell. Lorsque je l'ai essayé sur le serveur de développement de django, il s'est écrasé de la même manière sans laisser aucune trace de la réception de la requête. Tout fonctionne parfaitement bien lorsque je le teste depuis le navigateur. De même, le serveur twisted fonctionne bien pour tous les cas d'utilisation habituels. C'est la première fois que je rencontre un problème avec lui. Toute aide ou indication sera appréciée.