2012-05-10 9 views
1

django-celeryは私の開発マシンで動作したいと思ったことがすべてありました。具体的には、写真のURLを受け入れ、同じマシンがダウンロードするタスクに変換されます。複数のコンピュータ上のジャンゴ・セロリー

今私がしたいことは、herokuとセルローリーtasksのdjangoコードをオフィスに保管されている専用のコンピュータに置くことです。

私は次のステップが何であるかはわかりません。どうすればdjangoアプリにオフィスのコンピュータに接続するよう指示できますか? djangoアプリケーションのタスクを受け入れるようにオフィスコンピュータを設定するプロセスは何ですか?どのように私はモデルを更新するためにデータベースに接続できるようにdjangoアプリケーションにローカルコンピュータのログイン資格情報を与えるのですか?

理想的には、私は私のsetting.pyファイル内でこのようなものを置くために探しています:

remote_worker = '123.2.4.23:1234' 

やオフィスのコンピュータ

tasks = 'photos/tasks.py' 
remote_app = 'herokuapp123.com/myapp' 
username = 'me' 
password = 'pw' 

に、私は多くの質問があることを知っています。どのような助けや指針をいただければ幸いです!

答えて

1

これは、セロリ用に使用しているAMQPバックエンドによって大きく異なります。デフォルト(RabbitMQの)を使用している場合は、次のいずれかを実行しなければなりません。それに接続するために、ファイアウォールを介して、あなたのビジネスのIPへのポートを公開し、あなたのオフィスのコンピュータを構成し、

  1. Herokuのサーバ上でのRabbitMQをインストールし
  2. ビジネスコンピュータにRabbitMQをローカルにインストールし、Herokuにセロリを設定して接続してください。
  3. 両側にRabbitMQをインストールしてブリッジします。

また、VPNソリューションを使用して自分のビジネスネットワークにherokuサーバを統合して、直接お互いに話をすることができます(おそらくインターウェブ上にAMQPパケットを送信したくないためです)。

シナリオ1はおそらくHerokuがこれを行うためのプラグインインフラストラクチャを提供しているため、設定が簡単です。シナリオ2はおそらくビジネスファイアウォールに穴を開ける必要があるため、あなたが望むものではありません。インターネット経由のAMQPトラフィックのルーティングは、便宜的または信頼性の高い方法ではないため、シナリオ1と2の両方に遅延と信頼性の問題があります。メッセージが破棄され、セルリーが成功するか、失敗回数が最大になるまで、セロリーは再試行を続けます。しかし、AMQPはネットワーク上の問題を処理するように設計されているため、重要な場合にはパフォーマンスに悪影響を与えることがあります。しかし、その場合には、セールス・ワーカーをビジネス・デスクトップに置くことを再検討する必要があります。

シナリオCは、おそらく信頼性の面で最も優れていますが、設定が難しい場合もあります。あなたのニーズに基づいて選択してください。

+0

私はヒロク側にコブをインストールしました。それから私はヒロクのサーバーと同じオフィスコードに同じsrcコードツリーを持っています。オフィスコンピュータ用のsettings.pyファイルは、モデルを更新できるように、herokuサーバーのデータベースを使用します。それは機能しますが、タスクのモデルを更新すると(写真がダウンロードされるとモデルが更新される)、セロリの「ベストプラクティス」が破綻すると思います。 – Alexis

関連する問題