サーバーの仮想環境内で動作するフラスコベースの API があります。API で celery タスクを呼び出したいのですが、Celery はインストールされており、API が実行される仮想環境の外で他の目的のために既に実行されています。virtualenv 内で使用できるようにタスク モジュールをインポートするにはどうすればよいですか.
これがばかげた質問である場合は申し訳ありませんが、Virtualenv を使用するのは初めてです。
サーバーの仮想環境内で動作するフラスコベースの API があります。API で celery タスクを呼び出したいのですが、Celery はインストールされており、API が実行される仮想環境の外で他の目的のために既に実行されています。virtualenv 内で使用できるようにタスク モジュールをインポートするにはどうすればよいですか.
これがばかげた質問である場合は申し訳ありませんが、Virtualenv を使用するのは初めてです。
virtualenv 内にも「タスク」モジュールをロードするために必要な依存関係をインストールする必要があります (例: pip install celery
)。
タスクを送信する動作は、実際には virtualenv とは関係ありません。適切なブローカー URL と通信する必要があるだけです (ただし、Django データベースをブローカーとして使用する場合、これは少し複雑になる可能性があります)。
実際、タスクを名前で簡単に送信することもできます:
$ python
>>> from celery import Celery
>>> Celery(broker='amqp://').send_task('tasks.add', (2, 2))
そのため、必要な通信ポイントはブローカーだけですが、tasks.py モジュールと Celery アプリケーションには、タスクの送信方法に影響する構成を含めることができます (さまざまなキューへのルーティング、デフォルトのキュー名とキュー + タスク構成の設定など)。