turbogears2 的同时请求
Simultaneous requests with turbogears2
我是 Web 开发的新手,我正在尝试构建一个简单的 Web 界面,其中包含 Ajax 调用以刷新数据,并将 turbogears2 作为后端。
我的 Ajax 调用工作正常并定期调用我的 Turbogears2 服务器,但是这些调用需要时间才能完成(一些请求使服务器在其他机器上使用远程 SSH 调用,这最多需要3-4 秒完成)。
我的问题是 TurboGears 在处理下一个请求之前等待每个请求完成,因此我的所有并发 [=22=] 调用都在排队,而不是全部并行处理。
刷新 N 个值需要 3*N 秒,而并发只需 3 秒。
知道如何解决这个问题吗?
这是我当前的服务器端代码(方法 get_load 是用 Ajax 调用的代码):
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
您的问题可能是由于您正在使用 Gearbox wsgiref
服务器处理请求。默认情况下,wsgiref 服务器是单线程的,因此一次可以处理单个请求。这可以通过在 development.ini
server 部分中提供 wsgiref.threaded = true
配置选项来更改(与指定的 IP 地址和端口相同)。有关详细信息,请参阅 https://github.com/TurboGears/gearbox#gearbox-http-servers and http://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
我是 Web 开发的新手,我正在尝试构建一个简单的 Web 界面,其中包含 Ajax 调用以刷新数据,并将 turbogears2 作为后端。
我的 Ajax 调用工作正常并定期调用我的 Turbogears2 服务器,但是这些调用需要时间才能完成(一些请求使服务器在其他机器上使用远程 SSH 调用,这最多需要3-4 秒完成)。
我的问题是 TurboGears 在处理下一个请求之前等待每个请求完成,因此我的所有并发 [=22=] 调用都在排队,而不是全部并行处理。 刷新 N 个值需要 3*N 秒,而并发只需 3 秒。
知道如何解决这个问题吗?
这是我当前的服务器端代码(方法 get_load 是用 Ajax 调用的代码):
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
您的问题可能是由于您正在使用 Gearbox wsgiref
服务器处理请求。默认情况下,wsgiref 服务器是单线程的,因此一次可以处理单个请求。这可以通过在 development.ini
server 部分中提供 wsgiref.threaded = true
配置选项来更改(与指定的 IP 地址和端口相同)。有关详细信息,请参阅 https://github.com/TurboGears/gearbox#gearbox-http-servers and http://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