2017-03-11 9 views
0

私はWeb開発者には新しく、データをリフレッシュするAjaxコールとバックエンドとしてturbogears2を使って簡単なWebインターフェースを構築しようとしています。turbogears2の同時リクエスト

私のAjaxコールは正常に動作しており、Turbogears2サーバに定期的にコールしますが、これらのコールには完了までに時間がかかります(一部のリクエストでサーバは他のマシンでリモートSSHコールを使用します。コンプリート)。

私の問題は、TurboGearsが次のリクエストを処理する前に各リクエストが完了するのを待っているため、すべての並行Ajaxコールがすべて並列処理されるのではなくキューに入れられていることです。 N値をリフレッシュするには3 * N秒かかります。ここでは並行処理で3秒かかることがあります。

これを修正する方法はありますか?ここで

は私の現在のサーバー側のコードは、(メソッドのget_loadはアヤックスと呼ばれるものです)です:

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 

答えて

1

あなたの問題は、おそらくあなたはギアボックスwsgirefサーバとのリクエストにサービスを提供していることに起因します。デフォルトでは、wsgirefサーバーはシングルスレッドであるため、一度に1つの要求を処理できます。これは、development.iniサーバーセクション(IPアドレスとポートも指定されているものと同じ)にwsgiref.threaded = true設定オプションを指定することで変更できます。詳細については、https://github.com/TurboGears/gearbox#gearbox-http-serversおよびhttp://turbogears.readthedocs.io/en/latest/turbogears/gearbox.html#changing-http-serverを参照してください。

wsgirefは、TurboGearsの開発サーバーであり、通常は実働環境での使用はお勧めしません。アプリケーションをデプロイするときは、waitress、chaussette、mod_wsgiのようなものを使用することを検討する必要があります。http://turbogears.readthedocs.io/en/latest/cookbook/deploy/index.html?highlight=deploy

関連する問題