0

ネットワークで動作するアプリケーションを作成しています。GUI として ruby​​qt を使用しています。サーバーが起動しているかどうかを判断するには、(net/ping を使用して) ping を実行する必要があります。しかし、私は問題に遭遇しました。サーバーがダウンしている場合、コードを Thread または IO.popen ループに入れても、タイムアウトのために GUI がフリーズします。

Thread.new('switch') do
  if Net::PingExternal.new("195.168.255.244",timeout=0.9).ping then
      down = false
    else
      down = true
  end
end

0.9 秒間フリーズします。QtThreads はまだ ruby​​qt で動作していないため、GUI がフリーズしないようにするアイデアはありますか (タイムアウトを減らすことは別として)。

ping 部分を外部プログラムに入れ、ステータス (アップ/ダウン) をファイルに書き込み、実際のプログラムがそれを読み取ることを考えていましたが、この解決策は少しぎこちないようです。

4

1 に答える 1

0

リクエストからその操作を完全に抽象化することを検討しましたか? コストのかかる操作を外部ライブラリに移動すると、簡単にキューに入れ、delayed_job ( http://github.com/tobi/delayed_job/tree/master ) などを使用して実行できます。これにより、リクエストが停止するリスクがなくなります。まったく。

多分これはあなたが探しているものです...?

于 2009-06-13T22:32:44.810 に答える