【发布时间】:2015-08-15 06:50:34
【问题描述】:
据我所知,当与 CherryPy 服务器一起使用时,Bottle 应该是多线程的。我有一个简单的测试程序:
from bottle import Bottle, run
import time
app = Bottle()
@app.route('/hello')
def hello():
time.sleep(5)
@app.route('/hello2')
def hello2():
time.sleep(5)
run(app, host='0.0.0.0', server="cherrypy", port=8080)
当我通过打开 2 个选项卡并同时刷新它们来调用 localhost:8080/hello 时,它们不会同时返回,但其中一个在 5 秒后完成,另一个在 5 秒后完成.
但是当我同时在一个选项卡中调用 /hello 并在另一个选项卡中调用 /hello2 时,它们同时完成。
为什么当同一个端点被调用两次时,Bottle 不表现为多线程?有没有办法让它多线程?
Python 版本:2.7.6
瓶装版本:0.12.8
CherryPy 版本:3.7.0
操作系统:在 Ubuntu 14.04 64 位和 Windows 10 64 位上都试过
【问题讨论】:
-
这是一个有趣的观察。您是否尝试过使用不同的 Web 服务器来查看是否也是这种情况?以
paste为例 -
看看(有点老):blog.schmichael.com/2007/09/20/…
-
@emartinelli 但在 OPs 情况下,第二个端点在访问第一个端点时不会阻塞(与链接中的情况不同)
标签: python multithreading cherrypy bottle