2016-04-13 15 views
1

私はNotify/Listenメカニズムを実装しているので、特別なリクエストがWebサーバーに送られたときにnotifyを使用して、処理待ちの保留中のリクエストがあることをPythonでワーカーに通知できます。 実装はうまくいきますが、問題は、ワーカーサーバーが再起動している場合、特定の時刻にリスナーが存在しないため通知が失われることです。 MQRabbitなどのサービスを実装することはできますが、私のニーズは非常に単純で、そのようなモンスターを実装するのはあまりにも多くなります。 おそらく通知メカニズムにいくつかの永続性を与えることができる設定変数がありますか?事前Postgres Notify/Listenメカニズムに頼る方法はありますか?

答えて

1

おかげで私は、通知チャネルを永続化する方法があるとは思わないが、あなたは、単にテーブルに保留中の要求を格納することができ、および任意のための労働者のチェックは起動時に仕事を逃しました。

どのような作業をしているかによって、タイムスタンプか保留中/完了済みフラグのいずれかが機能します。

一貫性を保つために、キューテーブルのINSERTトリガーからNOTIFYトリガを発生させ、通知時にワーカーに常に(特定の要求だけでなく)残りの作業をチェックさせることができます。

+0

これは可能ですが、特に優雅なものではありません。そのようなハックを行うには、私が頼りにすることができるソリューションを持つために、適切で単純なキュー管理システムを実装することを好むでしょう。ありがとう! – AkerbeltZ

+0

@AkerbeltZキュー管理システムは、イベントをリッスンしキューに入れる役割を引き継ぎます。キュー管理システムが死ぬか、あまりにもすぐに再起動できますか?それにもかかわらず、通知は失われるでしょう。 –

関連する問題