Я использую флягу + gevent для сборки своего сервера, но gevent с именем «getall» был заблокирован флягой, поэтому функция getall не может печатать сообщение в этом коде. Патч обезьяны используется.Gevent заблокирован флягой даже использовать патч обезьяны
import time
import WSGICopyBody
from flask import Flask
import gevent
def handle_node_request() :
while True :
print 'in handle_node_request'
gevent.sleep(1)
def getall() :
print 'in getall'
def create_app() :
app = Flask(__name__)
app.wsgi_app = WSGICopyBody.WSGICopyBody(app.wsgi_app)
app.add_url_rule('/node',
'handle_node_request',
handle_node_request,
methods=['GET', 'PUT', 'POST', 'DELETE'])
return app
if __name__ == "__main__":
app = create_app()
from gevent import monkey
monkey.patch_all()
gevent.joinall([
gevent.spawn(app.run(host='0.0.0.0', port=8899, debug=True)),
gevent.spawn(getall),
])
Привет, Давидомизм, извините за тупую ошибку. Как вы сказали, это не правильный способ запустить Flask с Gevent. Поэтому я пытаюсь использовать WSGIServer, например, следующий код: http_server = WSGIServer (('', 8899), приложение), http_server.serve_forever(). при подключении будет появляться новая сопрограмма. Но я не знаю, как присоединиться к «getall» funtion в моем gevent. – vinllen
Похоже, что следующий код работает нормально: gevent.joinall ([gevemt.spwan (http_server.serve_forever), gevent.spawn (getall),]) – vinllen