応答が送信され、クライアントへの接続が閉じられた後に実行される Pyramid のコールバックが必要です。
私は終了したコールバックを認識しています。しかし、これは私が望むものではありません。完了したコールバックは、接続が閉じられる直前に評価されます (私が知る限り)。
手がかりはありますか?数秒の遅延を発生させずにメールを送信するために必要です。通常、セロリのようなものを使用する必要があると思います。しかし、Heroku のバックグラウンド ワーカーを雇う余裕はありません。
私の理解では、WSGI アプリケーションは基本的に、一連の引数を受け取り、HTTP 応答を表すテキストの塊を返すPython 関数です。そのブロブは、WSGI パイプラインのいくつかのフィルターに渡される場合があります。これも単なる関数です。その後、Web サーバーはクライアントに応答を送信し、接続を閉じます。ウィキペディアの記事から:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
yield 'Hello World\n'
Pyramid は WSGI アプリケーションであるため、接続のクローズなどはその影響範囲外で発生する可能性が高いことがわかります。
あなたの状況で、既存のソリューションを使用できない/使用したくない場合 (Chris McDonough によって提案されているように、キュー モードのpyramid_mailer)、キューから数秒ごとにデータを読み取るバックグラウンドスレッドを持つようなものを検討します。と電子メールを送信します。その後、ビュー コードはデータをキューに入れ、喜んで戻りますが、作業スレッドは電子メールを送信します。