gevent.WSGIServer метод запроса mystery - PullRequest
1 голос
/ 22 января 2012

Я получаю очень странное поведение при запуске WSGIServer от Gevent.Кажется, что каждый поступающий запрос неправильно интерпретирует его метод ..

Если я отправляю следующие запросы:

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')

Это то, что появляется в консоли:

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"

Для полноты картины я запускаю следующий скрипт:

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()

Что может происходить?

Редактировать:

Я использую версию Gevent: 0.13.0

1 Ответ

1 голос
/ 22 января 2012

Libevent имеет ограниченную поддержку методов HTTP, и то, какие методы HTTP поддерживаются, зависит от версии libevent. Почему у вас есть номер вместо метода, очевидно, ошибка. Может быть, вы строите и связываете gevent с разными версиями?

Можете ли вы попробовать перейти на gevent.pywsgi? Это решит проблему за счет некоторой производительности.

Также версия 1.0 Gevent имеет ряд значительных улучшений. Вы можете получить его там: http://code.google.com/p/gevent/downloads/list

...