私は現在、ユーザーが Gmail 経由でサインインできるようにする Ruby on Rails アプリを構築しており、受信トレイに常に IDLE 接続しています。メールは、Gmail の受信トレイに届くとすぐにアプリに届く必要があります。
現在、実装に関して次のような問題があり、いくつかの問題を解決するために本当に助けが必要です。
現時点では、Rails アプリが起動すると、IDLE 接続を維持するためにループ内で認証および実行されるスレッドがユーザーごとに作成されます。
スレッドは 10 ~ 15 分ごとに「IDLE をバウンス」し、IDLE 接続が維持されるように少量のデータが転送されます。
私が考える主な問題は、スケーラビリティと、アプリが Postgres に接続する数です。各スレッドには Postgres への接続が必要なようです。これは、Heroku では最大接続数 (基本の場合は 20、それ以降のプランの場合は 500) によって大幅に制限されます。
次の点で本当に助けが必要です。
- これらすべての IDLE 接続を維持しながら、データベースに必要なスレッドと接続の数を減らす最善の方法は何ですか?
- 注: Gmail への更新トークンが不足すると、ユーザー トークンの更新が発生する可能性があるため、データベースへのアクセスが必要になります。
- これを実装する方法について他に提案はありますか?
編集:
この質問の OP に似たものを実装しました: Ruby IMAP IDLE concurrency - how to attach?