Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 与turbogears2同时请求_Python_Ajax_Concurrency_Turbogears2 - Fatal编程技术网

Python 与turbogears2同时请求

Python 与turbogears2同时请求,python,ajax,concurrency,turbogears2,Python,Ajax,Concurrency,Turbogears2,我对web开发非常陌生,我正在尝试构建一个简单的web界面,使用Ajax调用刷新数据,并使用turbogears2作为后端 我的Ajax调用工作正常,并定期调用我的Turbogears2服务器,但是这些调用需要时间才能完成(一些请求使服务器在其他机器上使用远程SSH调用,这需要3-4秒才能完成) 我的问题是,TurboGears在处理下一个请求之前会等待每个请求完成,因此所有并发Ajax调用都在排队,而不是并行处理。 刷新N个值需要3*N秒,而并发性只需要3秒 你知道怎么解决这个问题吗 下面是我

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

我的Ajax调用工作正常,并定期调用我的Turbogears2服务器,但是这些调用需要时间才能完成(一些请求使服务器在其他机器上使用远程SSH调用,这需要3-4秒才能完成)

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

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

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


您的问题可能是由于您正在使用齿轮箱
wsgiref
服务器服务请求。默认情况下,wsgiref服务器是单线程的,因此可以同时为单个请求提供服务。这可以通过在
development.ini
服务器部分中提供
wsgiref.threaded=true
配置选项来更改(指定ip地址和端口的位置也相同)。有关更多详细信息,请参阅和


请注意,
wsgiref
是TurboGears的开发服务器,通常不鼓励在生产中使用。在部署你的应用程序时,你应该考虑使用一些类似于服务员、CuSuStTe或MODYWSGI的东西,请参阅

< P>你的问题可能是因为你正在用<强>齿轮箱<强> >代码> WSGReRf服务器来服务请求。默认情况下,wsgiref服务器是单线程的,因此可以同时为单个请求提供服务。这可以通过在
development.ini
服务器部分中提供
wsgiref.threaded=true
配置选项来更改(指定ip地址和端口的位置也相同)。有关更多详细信息,请参阅和

请注意,
wsgiref
是TurboGears的开发服务器,通常不鼓励在生产中使用。在部署应用程序时,应考虑使用类似服务员、CuasStTe或MODYWSGI之类的东西,请参阅

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