7

redis にアクセスできない有効なサーバー構成がありますが、サーバーは正しく機能します (redis が見つからない場合は機能を削除するだけです)。

ただし、接続エラーをうまく管理できません。接続エラーがいつ失敗したかを知りたいのですが、その場合はクライアントをシャットダウンします。

接続の再試行が止まらないことがわかりました。そして、quit() は実際には飲み込まれます - 「次のサーバー接続のために終了をキューに入れています」。- 呼び出されたとき。

接続を確立できない場合にクライアントを強制終了する方法はありますか?

var redis = require("redis"),
    client = redis.createClient();

client.on("error", function(err) {
    logme.error("Bonk. The worker framework cannot connect to redis, which might be ok on a dev server!");
    logme.error("Resque error : "+err);
    client.quit();
});

client.on("idle", function(err) {
    logme.error("Redis queue is idle. Shutting down...");
});

client.on("end", function(err) {
    logme.error("Redis is shutting down. This might be ok if you chose not to run it in your dev environment");
});

client.on("ready", function(err) {
    logme.info("Redis up! Now connecting the worker queue client...");
});
  • エラー - Resque エラー: エラー: 127.0.0.1:6379 への Redis 接続に失敗しました - 接続 ECONNREFUSED
  • エラー - Redis がシャットダウンしています。開発環境で実行しないことを選択した場合、これは問題ないかもしれません
  • エラー - Resque エラー: エラー: 127.0.0.1:6379 への Redis 接続に失敗しました - 接続 ECONNREFUSED
  • エラー - Resque エラー: エラー: 127.0.0.1:6379 への Redis 接続に失敗しました - 接続 ECONNREFUSED
  • エラー - Resque エラー: エラー: 127.0.0.1:6379 への Redis 接続に失敗しました - 接続 ECONNREFUSED
  • エラー - Resque エラー: エラー: 127.0.0.1:6379 への Redis 接続に失敗しました - 接続 ECONNREFUSED

興味深い点の 1 つは、'end' イベントが発行されるという事実です。なんで?

4

2 に答える 2

1

未処理のすべてのリクエストが完了するのを待ってコマンドを送信するのでclient.end()はなく、エラーが発生した場合に redis への接続を強制的に終了したい場合があります。client.quit()QUIT

于 2012-05-03T04:27:51.833 に答える