2016-09-03 3 views
0

私はソーシャルネットワーキングのDjango Webアプリケーション用にセロリを介して非同期タスクを実行します。私の現在のセットアップでは、セールスワーカーとセロビットはWebアプリケーションサーバー上で実行されますが、postgresql DBは別のサーバー上に存在します。Djangoプロジェクト用のリモート専用マシンにセロリを移動

非同期タスクはユーザーエクスペリエンスを妨げたり減速させたりしてはいけません。したがって、私は自分の専用マシンに移動することに決めました(現在はかなりボリュームがあります)。

私の質問は、上記のアーキテクチャを達成する方法に関するものです。非同期ワーカーはDB内のテーブルと行を操作しています。

1)は、どのように私はどのようにルートDBで、必要な変更をもたらすために彼らの結果でしょう)

2、離れた場所で私の非同期の労働者を呼ぶだろうか?

これを達成する最も効率的な方法を知りたいと思っています。具体的な例がいいと思います。前もって感謝します。

答えて

0

あなたはちょうどこのようBROKER_URL変更する必要があります。だから、最初のあなたは、あなたがしたいものをブローカーを決定する必要があり

BROKER_URL = '[email protected]// AMQP://ユーザ名を'詳細はこちらhttp://docs.celeryproject.org/en/latest/getting-started/brokers/index.htmlをご覧ください。

BROKER_URLの上記の例では、私はrabbitmq-serverを使用すると述べました。

あなたのコードを置く必要があります(gitまたはsvnを使用している可能性があります)。使用することを決めたブローカーをインストールする必要があります。私の場合、rabbitmq-serverをインストールする必要があります。 Ubuntuのでは、あなたが入力できます。 sudo apt-get install rabbitmq-serverrabbitmq-server

をインストールするには、その後、あなたは、このようなceleryをインストールする必要があります。 pip install celery

あなたは、起動、再起動および停止するためにセロリを管理するために、ユーザsupervisorを促進します。詳しい情報についてsupervisorがここで見つけることができます:http://supervisord.org/

編集1:

回答1:セロリの関数呼び出しは同じです。

回答2:私はあなたがデータベースとしてMySQLを使用することを想定しています

:あなたはこのようsettings.pyファイルにリモートマシンのDBホストを追加する必要があります。

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': your_db_name, 
     'USER': your_db_user, 
     'PASSWORD': your_db_password, 
     'HOST': your_remote_db_host_here, 
     'PORT': your_port_no_for_mysql_here, 
    }, 
} 

それでは、この設定を行いますと、それはMySQLデータベース用のリモートホストに接続することができ、アプリケーションのすべてのユーザー(セロリのようなユーザーを)教えてくれるということです。

+0

@HassanBaig私の編集を参照してください –

+0

@HassanBaig非常に慎重に私の答えをお読みください。私はこのことを私の答えの第5段落に述べました。セロリサーバーでもプロジェクトをクローンする必要があります –

+0

第5段落によると、リモートサーバーのgit/svnからプロジェクト全体を*プルする必要があるようですね。だから、私のリモートサーバーは、Webアプリケーションサーバーのスナップショットになると思われますが、セロリの労働者がいて、Webアプリケーションサーバーのようなトラフィックを処理しないため、nginxをインストールする必要も、gunicornを起動する必要もありません。そうですか? –

関連する問題