【发布时间】:2015-04-13 21:19:23
【问题描述】:
我在 python 中使用 tornado 库。我有一个添加数据的队列。我必须保持连接打开,以便当客户端请求时我从队列中发送项目。这是我的一个简单实现。我面临的问题是当我向queue 添加新元素时,我没有看到它被返回。事实上,我没有看到在IOLoop.current().start() 行下面执行任何代码。
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, Application, url,asynchronous
from Queue import Queue
import json
q=Queue()
q.put("one")
q.put("two")
class HelloHandler(RequestHandler):
def get(self):
data=q.get()
self.write(data)
def make_app():
return Application([
url(r"/", HelloHandler),
])
def main():
app = make_app()
app.listen(8888)
IOLoop.current().start() # stops here
time.sleep(2)
q.put("three")
print q
if __name__=='__main__':
main()
第一次这样做: http://localhost:8888/
返回“一”
第二次:
返回“二”
第三次了”
阻止
【问题讨论】: