Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Gevent&x2B;tornado.httpserver.httpserver_Python_Tornado_Gevent - Fatal编程技术网

Python Gevent&x2B;tornado.httpserver.httpserver

Python Gevent&x2B;tornado.httpserver.httpserver,python,tornado,gevent,Python,Tornado,Gevent,有没有办法在gevent中运行tornado.httpserver.httpserver 我正在为一个大文件上传编写一个简单的代理服务器,这个想法很简单——它监视一堆服务器上的可用空间(到目前为止还并没有问题),并且应该将PUT请求路由到一个WebDAV服务器。为了提高效率,我想一块一块地对其进行流式处理,但无法从gevent提出基于pywsgi的解决方案 settings = setup() log.info('Listening on %s:%d' % (settings.host, set

有没有办法在gevent中运行tornado.httpserver.httpserver

我正在为一个大文件上传编写一个简单的代理服务器,这个想法很简单——它监视一堆服务器上的可用空间(到目前为止还并没有问题),并且应该将PUT请求路由到一个WebDAV服务器。为了提高效率,我想一块一块地对其进行流式处理,但无法从gevent提出基于pywsgi的解决方案

settings = setup()
log.info('Listening on %s:%d' % (settings.host, settings.port))

# server for request routing
server = WSGIServer((settings.host, settings.port), app)

# separate greenlet to periodically get info about cluster free space
monitor = gevent.spawn(storage_monitor, settings.timeout)

# setup a proper signals to stop server and monitor greenlet
gevent.signal(signal.SIGTERM, monitor.kill)
gevent.signal(signal.SIGINT, monitor.kill)
gevent.signal(signal.SIGQUIT, monitor.kill)

gevent.signal(signal.SIGTERM, server.stop)
gevent.signal(signal.SIGINT, server.stop)
gevent.signal(signal.SIGQUIT, server.stop)

# start the server
server.start()
gevent.wait()
也许我只是不明白什么?由于gevent docs尚未更新到1.0,这是一项相当艰巨的任务:)


也许使用gevent的StreamServer+自定义协议更好

将Tornado和greenlet风格的并发结合起来是可能的(例如,请参见或上面的顶部答案),但它很复杂,主要充当同步和异步世界之间的桥梁。在一个新项目中,我会敦促您选择一种风格并坚持下去,而不是将多个复杂的框架组合在一起


其次,Tornado的HTTPServer(3.1版)目前不支持流式请求,因此它也不能满足您的需求。我认为Twisted可以,但我还是建议您选择Twisted或gevent,而不是尝试将它们组合起来。

谢谢您的回复,我已经做出了相同的决定。我只使用没有HTTP的StreamServer。我一开始工作就把它贴在这里