2016-10-16 6 views
0

特にWebアプリケーションをプログラミングする際には、Djangoは時にはすべての成功またはすべての失敗のアクションセットを持つことがありますソート)。明らかに、データベースを使って作業しているときは、トランザクションを使用できます。例外の場合の "トランザクション処理"を保証するための適切なワークフローは何ですか?

しかし、いくつかの状況では、これら(オールオアナッシング)制約がデータベースコンテキストの外で必要とされている

(例えば支払いが成功であるならば、我々はなど、製品のアクティベーションコードまたは他のリスク顧客の苦情を送信する必要があります)

しかし、私はエラーを記録し、問題を手動で修正する必要があり

(時間1+続いたもの)いくつかの運命の日に、send_code()機能は単に時間を失敗し、再び何らかの一時的なネットワークエラーに言うことができます、例えば手動でメールを送信してください。

何らかの作業キューを設定する必要があります。失敗すると、キューの最後に戻って再試行することができますか?

ロギング/キューイングシステムにも障害が発生するとどうなりますか? (私はこの時点であまりにも心配していますか?)

答えて

1

私たちは弊社でマイクロサービスを使用しており、少なくとも1ヶ月に1回、私たちのマイクロサービスはしばらくダウンしています。私たちは、ユーザーに製品を送る前に行われるすべてのステップの支払いプロセスとステータスについて、Transactionモデルを持っています。何かがうまくいかなかったり、接続されたマイクロサービスの1つがダウンしている場合は、それをstatus=errorのようにマークし、データベースに保存します。次に、これらのプロセスを見つけて終了するためにcronジョブを使用します。初めに何か試してみる必要があります。あなたのニーズに合わない場合は、他のものを試してみてください。

関連する問題