2
私は、postgresテーブルに接続してロジックとコードを適用するモジュールをrubyで書いています。以下はレールでの接続処理の破損
はサンプルコードです:
module SampleModuleHelper
def self.traverse_database
ProductTable.where(:column => value).find_each do |product|
#some logic here that takes a long time
end
end
end
ProductTableは300万人以上のレコードを持っています。私はwhere句を使用して検索されたレコードの数を減らしました。
しかし、私はコード接続の証明をする必要があります。接続が途切れ、最初からテーブルを横断し始める必要がある時があります。私はこれを望んでいない、むしろそれは取った時間が各レコードのためにあまりにも多いので、中断したところから始めるべきである。
コードを途中で中止するにはどうすればよいでしょうか?
1つの方法は、停止した場所の主キー(id)を記録してそこから再び開始するテーブルをデータベースに作成することです。しかし、このようなプロセスが多いため、データベースにテーブルを作成する必要はありません。
のが、どのように同じポイントからこの関数を再開していますか? traverse_productsが呼び出されるたびに、カウンタとリトライがゼロに初期化されます。 –
エラーを再試行するため、再起動する必要はありません。あなたはどんな種類のエラーが発生することが予想されているのかわからなかったので、正しいエラークラスをプラグインする必要があります... –
これは素晴らしいです...しかし、私は私の目的を果たすとは思わない。私はcronタスクで関数を実行する必要があり、前の日を停止した場所から実行する必要があります。 –