首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时使用turbogears2请求

同时使用turbogears2请求
EN

Stack Overflow用户
提问于 2017-03-11 09:06:27
回答 1查看 139关注 0票数 0

我对web非常陌生,我正在尝试构建一个简单的Web界面,使用Ajax调用来刷新数据,并将turbogears2作为后端。

我的Ajax调用运行良好,并定期调用我的Turbogears2服务器,但是这些调用需要时间来完成(一些请求使服务器在其他机器上使用远程SSH调用,这需要3到4秒的时间来完成)。

我的问题是,TurboGears在处理下一个请求之前等待每个请求完成,所以我所有并发的Ajax调用都在排队,而不是并行处理。刷新N值需要3*N秒,而并发可能只需要3秒。

知道怎么解决这个问题吗?

下面是我当前的服务器端代码(方法get_load是用Ajax调用的):

代码语言:javascript
复制
class RootController(TGController):
@expose()
def index(self):
    with open ("index.html") as data:
        index = data.read()
    return index


@expose()
def get_load(self, ip):
    command = "bash get_cpu_load.sh"
    request = subprocess.Popen(["ssh", "-o ConnectTimeout=2", ip, command])
    load = str(request.communicate()[0])
    return load
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-11 14:41:47

您的问题可能是因为您使用Gearbox wsgiref服务器为请求提供服务。默认情况下,wsgiref服务器是单线程的,因此可以同时提供单个请求。可以通过在您的wsgiref.threaded = true 服务器部分中提供配置选项(也指定ip地址和端口的相同位置)来更改这一点。有关其他详细信息,请参阅https://github.com/TurboGears/gearbox#gearbox-http-servershttp://turbogears.readthedocs.io/en/latest/turbogears/gearbox.html#changing-http-server

请注意,wsgiref是TurboGears的开发服务器,通常不鼓励在生产上使用。您应该考虑在部署应用程序时使用诸如侍应生、沙乌塞特或mod_wsgi之类的东西,请参阅http://turbogears.readthedocs.io/en/latest/cookbook/deploy/index.html?highlight=deploy

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42733363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档