2017-06-08 17 views
0

私はここで少し失われています。投稿のリクエストでdjangoを使用してメールを送信したいと思います。しかし、私はバックグラウンドスレッドで送信するので、ユーザーが返信を待つことは望ましくありません。また、電子メールは、ユーザーが指定した順番で30秒ごとに送信されます。djangoで非同期タスクを実行するには?

しかし、ユーザーが電子メールの送信をキャンセルするオプション、つまりキャンセル入力を処理する別の投稿要求があります。

電子メールを送信しているスレッドでキャンセル操作をリスンするにはどうすればよいですか? 30秒の遅延を実装するにはどうすればよいですか? 私は睡眠を使用することを考えましたが、私がそれをしたら、それはキャンセル信号をスキップしますか?

+0

WSGIアプリケーションでは、余分なスレッドに注意する必要があります。それらはしばしばWSGIサーバーに問題を引き起こします。 DBに送信するメールを保存し、送信する管理コマンドとして追加のプロセスを実行することができます。 –

+0

私は@ KlausD。に同意します。あなたはDB内のエントリと、その電子メールのステータスに関する関連フィールドを作ることができます。別のスクリプトは、DBからこれらをリッスンし、定義されたある間隔でアクセスします。間にキャンセルリクエストが届いた場合。それらの電子メールのステータスをキャンセルするように変更します。 – harshil9968

+2

セロリの完璧なユースケースのようです... –

答えて

1

上記のように、セロリタスクを使用して電子メールを非同期で送信する場合が考えられます。次に、電子メールの送信をキャンセルするために、POST(キャンセル)要求を処理するビューが、その電子メールのシーケンスの送信を担当するタスクを取り消すことができます。このquestion/answerはそれを行う方法を示しています。

関連する問題