Итак, я создаю сервер и делаю запрос к нему, все в том же файле.Gevent - SSL WSGIServer блокирует, когда он не должен
Это работает правильно:
import gevent
import gevent.monkey
gevent.monkey.patch_all()
import requests
from gevent.pywsgi import WSGIServer
from flask import Flask
app = Flask(__name__)
app.debug = True
# Simple catch-all server
@app.route('/', defaults={'path': ''}, methods=['GET', 'POST'])
@app.route('/<path:path>', methods=['GET', 'POST'])
def catch_all(path):
return 'It is Working!'
if __name__ == '__main__':
http_server = WSGIServer(('', 8080), app)
srv_greenlet = gevent.spawn(http_server.start)
gevent.sleep(0.5)
resp = requests.get('http://127.0.0.1:8080/')
print resp.text
http_server.stop()
gevent.joinall([srv_greenlet])
Выход:
(py2sni)[email protected]$ python question.py
127.0.0.1 - - [2013-10-01 11:48:46] "GET/HTTP/1.1" 200 130 0.000614
It is Working!
Но это блоки, и я должен убить процесс извне:
import gevent
import gevent.monkey
gevent.monkey.patch_all()
import requests
from gevent.pywsgi import WSGIServer
from flask import Flask
app = Flask(__name__)
app.debug = True
# Simple catch-all server
@app.route('/', defaults={'path': ''}, methods=['GET', 'POST'])
@app.route('/<path:path>', methods=['GET', 'POST'])
def catch_all(path):
return 'It is Working!'
if __name__ == '__main__':
http_server = WSGIServer(('', 4430), app, keyfile='server.key', certfile='server.crt')
srv_greenlet = gevent.spawn(http_server.start)
gevent.sleep(0.5)
resp = requests.get('https://127.0.0.1:4430/')
print resp.text
http_server.stop()
gevent.joinall([srv_greenlet])
Единственная разница в этих двух скрипты - это то, что один использует SSL, а другой - нет. Где я могу сделать ошибку здесь? Если это помогает, я использую gevent 0.13.8 и запросы 2.0