1

django-celery開発マシンで作業することで、やりたいことはすべて手に入れました。より具体的には、アプリは写真の URL を受け入れ、それが同じマシンがダウンロードするタスクに変換されます。

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

次のステップが何かはわかりませんが。オフィスのコンピューターに接続するように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'

私は多くの質問があることを知っています。ヘルプやポインタをいただければ幸いです。

4

1 に答える 1

1

これは、セロリに使用している AMQP バックエンドに大きく依存します。デフォルト (RabbitMQ) を使用している場合は、次のいずれかを実行する必要があります。

  1. Heroku サーバーに RabbitMQ をインストールし、そのポートをファイアウォールを介してビジネス IP に公開し、オフィスのコンピューターを構成して接続します。
  2. ビジネス コンピューターにローカルに RabbitMQ をインストールし、Heroku で celery を構成して接続します。
  3. 両側に RabbitMQ をインストールし、それらをブリッジします。

別の方法として、VPN ソリューションを使用して heroku サーバーを独自のビジネス ネットワークに統合し、相互に直接通信させることもできます (なぜなら、interwebz 経由で AMQP パケットをそのまま送信したくないからです)。

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

シナリオ C は、信頼性の点ではおそらく最適ですが、セットアップがより困難です。必要に応じて選択してください。

于 2012-05-10T22:49:59.413 に答える