2016-05-02 8 views
1

Currenty私はAPIをincommingのために1 Ec2とのインスタンスを持っていることはどのように私は、APIで異なるコードベースとセロリを使用することができますし、労働者

  1. ユーザーの注文を要求し、私は2つのEC2インスタンスを持っています処理キュー

問題はコードベースがAPIとセロリの両方の作業者で同じです。 E、G

私はcutsomer.process_order(order_id)

を使用すると、作業者は、残りの部分はありませんので。

私はワーカーコードからAPIを分離する方法はありますか?別のコードベースと別のコードベースのワーカーでAPIを作成したい

答えて

4

APIコードは、タスクソースコードを使用せずに任意のセラータスクを呼び出すことができます。セロリはsignaturesと呼ばれる機能があります。

from celery import Celery 
app = Celery(...) 

process_order = app.signature('your-other-project.tasks.process_order') 
result = process_order.delay(order_id) # standard calling api works 
print(result.get()) 

ちょうどあなたのAPIと労働者の両方が同じメッセージ・ブローカーに接続して、あなたの労働者が実際に署名で指定されたタスクを持っていることを確認してください。

+0

ありがとうございます。また、労働者は、同様にジャンゴンアプリケーションである必要がありますか、労働者は、単純なパイソンモジュールとタスク通常のセロリのタスクにすることができますか? – Karl

+0

セロリはいつでもDjangoに依存しません。 – tuomur

関連する問題