3

ここに問題があります-djangoプロジェクトを搭載したサーバーがあります。

多くのタスクを実行する必要があるため、celery+rabbitmqを使用してそれらを処理します。

最近、サーバーのメモリが不足していることを発見したため、すべてのタスクを別の専用サーバーに移動することにしました。このガイドに従って、djangoプロジェクトをコピーせずにrabbitmqクラスターを作成しました。

新しい専用サーバーのセロリにタスクを送信できますが、セロリはタスクが未登録であると言っています。

Received unregistered task of type 'djangoapp.tasks.taskname'. The message has been ignored and discarded.

では、どうすればよいですか?djangoプロジェクトなどをコピーするだけですか?

4

2 に答える 2

1

少なくとも、タスクを含むコードは、タスクを実行するボックスにある必要があります。つまり、djangoapp.tasksコードがそこにある必要があります。


当然、そのすべての依存関係(おそらくモデルコード)と構成(設定)もそこにある必要があります。
それらの部分だけを含めることでスペースを節約することもできますが、それだけの価値はないと思います。

コードベース全体(プロジェクト+アプリ)を両方のサーバーで実行する必要があります。


参考までに、Celeryを起動すると、登録済みのタスクが表示されます。これを使用して、すべてが適切に設定されていることを確認できます。

于 2012-12-30T15:24:04.843 に答える
0

各セロリワーカーサーバーは同じコードのコピーを実行している必要があります、はい

于 2012-12-30T15:23:54.717 に答える