2016-12-06 11 views
0

私はWebアプリケーションのバックエンドにDjangoを使用し、結果を表示する&を検索するにはdjango-haystack(with Solr)を使用します。 RealTimeSignalProccessorフォームdjango-haystackを使用していますが、問題が1つあります。
- Auction modelexpires-(DateTimeField)です。私が結果を表示しているとき、私はe-bayのようにそれをやっています(Expires in:1h 23m 5s)。
問題は、すべてのオークションが表示されているページで、このビューにアクセスするたびにExpires inパラメータを更新する場合(django-haystackのドキュメントを読んでいるように) object.save() Solrインデックスデータベースを更新する方法。しかし、毎回30件の結果を出すと、すべてのオークションが掲載されているビューに行くたびに、それは非常に遅く効率的ではありません。
他に解決策はありますか?何を指示してるんですか ?django-haystack RealTimeSignalProcessorで結果を表示するように最適化

+0

有効期限内の更新を希望する理由は何ですか?期限がutcnow()より大きい任意の値に対して、DateTimeFieldのascによる順序付けと同じではないでしょうか? – MatsLindh

+0

'Expires'は常に更新に関してutcnow()よりも大きいです - 私はオークションが終了するまでの時間を表示する必要があります。例:2d 4h 3mとページリフレッシュ(2d 4h 2mなどに変更)。私が 'django-haystack'文書で言ったように。オブジェクトのsave()メソッドを呼び出してSolrのパラメータを更新する必要があります。 – lcadc17

+0

はい、 'expires in'部分は実際にデータベースの一部である必要はありません。モデルまたはビューで検索するときにそれを計算します。ページビューごとにx行の行を更新すると、問題が発生する可能性があります。 – MatsLindh

答えて

1

データベースのexpires_inフィールドを更新し続ける必要はありません。広告が期限切れになる時刻をexpires_atに保ち、モデルまたはビューで検索方法に残っている時間を計算します。

このようにして、トラフィックが増加するにつれてデータベースにデータを書き込む必要がなくなり、有効期限が変更されると、ユーザーがページを同時に表示しているときに競合状態になることはありません有効期限を更新しています。

関連する問題