質問

思を再利用可能なDjangoアプリを扱う状況を追跡するシステムにデータの中で活用してまいりました。のようにfacebookの"ニュースフィード.

利用の場合、例えば:

  • 教授を作成できます譲渡により特定の日付および学生できるrssフィードの配置が生成された短い説明で、日してくれているのですが、、、 リンクの説明.
  • またアップロード可能な新しいPDFがちの興味深い彼の学生にとってのrssフィードの情報に関することを表示する必要があるので、例えば、内容をpdf、 は、リンクをダウンロードへのリンクでプレビュー.
  • リンクビデオ映像は掲載できるのは、ニュースフィード さまざまな取り組みが認められ小さなサムネイル と、クリック ビデオはembbeded javascriptを使用 のユーザーの時間に一人で見ることができる。

一つ懸念の取り扱い方の異なる種類の更新および表示に正しい"htmlのスニペット"です。その他の、より重要なのは、どのようにデザインのモデルの"Djangoます。

は、思いついで

  1. モデルを用いた遺;
  2. を用いた。

私は前の投稿ここでは、なかなか見ものです。チPinaxめの確認作業を行っていたので実施し、その位置づけはどうなるんですか。なので、私はここにい求の提案としての取り扱いについてこの素敵な、非hackyます。

おかげさまで、事前に

役に立ちましたか?

解決

私は2つの方法で考えることができます:

まず、多分あなたは作ることができます フィード あなたのモデルのために Assigments, PdfFiles, 、 と Youtube link, 、そしてライブラリを使用します フィードパージャー ニュースビューに埋め込むために、これは簡単な方法です。テンプレートで定義できるため、新しいアクティビティの各アクティビティのコードを定義できます。

私が考えることができる2番目のことは、クラスを作ることです Activity:

class Activity(models.Model):
    date = models.DateTimeField(auto_now_add = True)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

そしてを通して 信号 新しいAssigmentまたはPDFアップロードまたはYouTubeリンクを使用するたびに、新しいアクティビティの新しいインスタンスを作成し、各クラスに対してのような方法を作成します render_to_html, 、このようにして、あなたの見解では、過剰なアクティビティのために作成し、メソッドrender_to_htmlを呼び出すことができます

他のヒント

Pythonでは、美しい言語構築活動の流れとNewsfeeds.Tommasoと書いたストリームの枠組みのパッケージです。https://github.com/tschellenbach/stream-framework では、現在最も多く使用されているPythonソビルnewsfeeds.また、提供を開催液 https://getstream.io.のDjangoお客様が最も簡単なしたと発表しました。:https://github.com/GetStream/stream-django タはこちら(https://github.com/getstream/stream-python)

の孔部作品がこのような

{% load stream_django %}

{% for activity in activities %}
    {% render_activity activity %}
{% endfor %}

このラーニングによるテンプレートに位置しactivity/tweet.html に活動している。のためのインスタンス

{{ activity.actor.username }} said "{{ activity.object.body }} {{ activity.created_at|timesince }} ago"

のdocsはこちら:https://github.com/GetStream/stream-django#templating

ストリームのフレームワークを使用する事で構築のnewsfeedのいずれかを使RedisはCassandra.このため規模の個人newsfeeds用ファンアウトです。

ほかのストリームの枠組みをいう。)多くの他のソリューションがあります。完全なリストはdjangoパッケージ:https://www.djangopackages.com/grids/g/activities/

ますので予めご了承newsfeedsがスケーリング課題による指導を続けたのである。一般にある3共通のアプローチ:

Denormalization戦略

プル ほとんどのユーザを開始します。開いた時に、飼料のページを使ってクエリのフィードからのすべてのユーザーます。場合、ユーザーフィードに保存すがいつまで働く大学で開かれました。最終的にはからなくてはいけないと利用などの戦略として関わらすことがしばしばクエリーのノードを保存しておくユーザーを配信します。

押し のアプローチに書き込みあなたの活動の全てのフォロワーを配信します。もちろんのことばを無駄トンの資源が、最終的には次のように事前に計算した飼料ですこのアプローチが当初は非常に効率的に)スケールがります。

組み合わせ 一部の最適化システムの組み合わせを使用これらの二つのアプローチをとる。また、ヤフーの論文ります。

保存オプション

規格納すべてこのデータの共通オプションRedis,Cassandra易.よう素早くで比較して:

Redis Redisは極めて簡単セットアップし、維持します。そして店舗データを記憶です。このときの最適化などserializeデータからスクフォースメンバーであるデータベースのための頻度が少ない照会されるデータです。ここで問題となるのはな些細な追加機をごRedis。

Pythonの もんごういかDBは、主にモーターを使用する数rubyプロジェクトとしてのご利用もバックエンドのためのポンプです。ioによるe14n.私は個人的な走りで生産できない適切に評価することができます。■がしかし多くのblogposts課題を取り上げ、パフォーマンス、拡張性、保守性のもんごういか.

Cassandra Fashiolista,InstagramやCdをCassandra.当社主催のソリューションに使用Cassandraとしての英語版をご覧下さいそして非常にコスト効率での運用を追加できますノードです。唯一の問題は難しいセットアップし、維持します。

記事

またこの拡張性の高いポストたまな取り組みについて、ご説明いデザインの決定に関してhttp://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html

詳飼料デザインをおすすめする読書のまに基づくりお気に入りになり:

あなたが問題を解決するためにサンドボックスソリューションを使うように見えます。しかし、SandboxとしてWebテンプレートを頻繁に拒否することはできませんので、私はどのようになるのでしょうか。新しい機能が含まれている別のプロジェクトを作成したと思います。それがあれば、このプロジェクトを選択し、[プロパティ]ウィンドウでサンドボックス化ソリューションプロパティを false に設定する必要があります。

一般的な関係がここに行く方法です。更新テーブルに参加する代わりに、自分でモデルを解決するようにしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top