2012-01-22 2 views
1

Je reçois un comportement vraiment étrange lors de l'exécution de WSGIServer de gevent. Il semble que toute demande qui vient par sa méthode est d'avoir interprété de manière incorrecte ..gevent.WSGIServer demande méthode mystère

Si je vous envoie les demandes suivantes:

requests.get('http://localhost:5000') 
requests.head('http://localhost:5000') 
requests.delete('http://localhost:5000') 
requests.put('http://localhost:5000') 
requests.post('http://localhost:5000') 

C'est ce qui apparaît dans la console:

127.0.0.1 - - [2012-01-22 14:55:36] "POST/HTTP/1.1" 405 183 "-" "python-requests/0.9.1" 
127.0.0.1 - - [2012-01-22 14:55:41] "DELETE/HTTP/1.1" 405 185 "-" "python-requests/0.9.1" 
127.0.0.1 - - [2012-01-22 14:55:46] "16/HTTP/1.1" 405 181 "-" "python-requests/0.9.1" 
127.0.0.1 - - [2012-01-22 14:55:50] "8/HTTP/1.1" 405 180 "-" "python-requests/0.9.1" 
127.0.0.1 - - [2012-01-22 14:56:13] "HEAD/HTTP/1.1" 200 0 "-" "python-requests/0.9.1" 

Pour complétude, c'est le script que je cours:

from gevent.wsgi import WSGIServer 
from flask import Flask 

app = Flask(__name__) 
app.debug = True 

@app.route("/") 
def hello(): 
    return 'hello' 

port = 5000 

http_server = WSGIServer(('', port), app) 
http_server.serve_forever() 

Que pourrait-il se passer?

Edit:

J'utilise la version gevent: 0.13.0

Répondre

1

Libevent a un support limité pour les méthodes HTTP et les méthodes HTTP sont pris en charge dépend d'une version libevent. Pourquoi vous avez un numéro au lieu d'une méthode est évidemment un bug. Serait-ce que vous construisez et reliez gevent contre différentes versions?

Pouvez-vous essayer de passer à gevent.pywsgi? Cela réglera le problème au prix d'une performance.

La version 1.0 de gevent a également été améliorée. Vous pouvez l'obtenir ici: http://code.google.com/p/gevent/downloads/list

+1

J'utilise gevent version 0.13.0 installé en utilisant apt-get. Utiliser 'pywsgi' résout les problèmes, mais je suis curieux de savoir pourquoi les choses vont si mal en utilisant' gevent.wsgi'. – Acorn

+1

Les dépôts ubuntu ont une ancienne version de gevent. Mise à niveau vers la dernière version trié tout. À votre santé! – Acorn