2011-01-26 33 views
6

私のプロジェクトでセロリを使うことを検討しています。私はそれを使用する方法に関する多くの情報を見つけました。私が興味を持っているのは、私のソリューションを展開/パッケージ化する方法です。セロリとDjango - デプロイメント

django appとceleryd worker(電子メールを送信するコンポーネント)の2つのコンポーネントを実行する必要があります。たとえば、私は、サポートチケットを電子メールで送るemail_ticketタスクを私のdjangoアプリケーションで使用したいと考えています。私はdjangoアプリでtasks.pyを作成します。

@task 
def email_ticket(from, message): 
... 

私はdjangoアプリケーションを導入して、同じパスから別のプロセスとしてcelerydを実行しますか?

./manage.py celeryd ... 

異なるサーバーのワーカーはどうなりますか? djangoアプリケーション全体をデプロイし、celerydだけを実行しますか?私は労働者だけにセロリを使うことができると理解していますが、セロリームとセロリを使用したいと思います。

フィードバックは高く評価されます。ありがとう

フィードバックありがとうございます。

+0

良い質問です。受け入れられた答え(「すべて展開」)は確かに単純で堅牢ですが、最適ではありません。多分、プロセス全体をあまり複雑にしなくても、誰かが必要なコードだけを「ワーカー」マシンに配布する良い方法を考えるかもしれません。 –

答えて

3

これは、ドキュメントhereに記載されています。要は、いくつかの初期スクリプトをダウンロードし、いくつかの設定を行う必要があります。それが完了すると、celerydは起動時に起動し、あなたは停止して動作します。

+0

私はこのリンクを知っています。私が興味を持っているのはプロジェクトの構造です。私のDjangoアプリケーションとワーカーコードをどのように構造化しますか?私はちょうどdjangoアプリケーションが必要な別のディストリビューションを作成する必要がありますか?たとえば、私は労働者の配布のためのテンプレートとメディアは必要ありません。私はモデルが必要です。 – Tomas

+1

私はそれがどこに展開されているかによって異なると思います。私が取り組んでいるものについては、すべてが1つのWebサイトにデプロイされるので、私はちょうどアプリケーションにタスクを入れます(私のプロジェクトはきめ細かなアプリケーションに分割されています)。 次に、私はワーカーノードにすべてを配備します。シンプルで、ワーカーノードディストリビューションにそれを含めるのを忘れていたので、何かを壊す心配はありません。 –

+0

私はそれを行う方法だと思います。すべてのワーカーノードに対してDjangoアプリケーションを再デプロイしてからworkerを実行します。ありがとう、私はあなたの入力を感謝します。 – Tomas

関連する問題