1

django-utilsを使用して、多くのコマンドを非同期に並列スレッドで開始しようとしています (これらのコマンドは I/O で 99.99% を処理します)。ただし、次のエラーが発生し続けます。

QueueException: MyProject.maintenanceInterface.commands.queuecmd_refreshDataAsync not found in CommandRegistry

関数 refreshDataAsync は、maintenanceInterface 内の commands.py にあります。また、maintenanceInterface は、インストールされているアプリのリストにあります。

次のようにキュー コンシューマーを実行しています。

python .\manage.py queue_consumer

キュー コンシューマ ログを見ると、(init で) 関数が見つかったことがわかります。

djutils.commands.queuecmd_delayed_resize
djutils.queue.queue.QueueCommand
djutils.queue.queue.PeriodicQueueCommand
maintenanceInterface.commands.queuecmd_refreshDataAsync
2012-04-18 16:57:10,598:djutils.queue.logger:INFO:Starting periodic command execution thread

それでも例外をスローします。

私はどこかでステップを逃していますか?

4

2 に答える 2

1

簡単な答えではありませんが、確かに良い提案です。セロリとジャンゴセロリを使用して、この非同期処理を実行してください。

django-utils (少なくとも async に関して) を使用してすべてのことを行うことができます (多くのバックエンド、任意の種類の設定/パラメーターを使用できます)。セロリを使用して行う関連プロジェクトもほとんどありません。物事は非同期です(たとえば、セロリを使用してメールを送信したい場合、0行のコードを記述します。そのためのアプリがあります。)

于 2012-04-19T17:44:15.737 に答える
0

問題は、コンシューマーがdjangoコードベースと同じライブラリをインポートしていたことですが、パスが少し異なります。

消費者は輸入していた

maintenanceInterface.commands.queuecmd_refreshDataAsync

そして、コードはその上のパッケージを明示的に呼び出していました:

WepPlatform.maintenanceInterface.commands.refreshDataAsync

そのため、コンシューマーは一致できず、コマンドを実行しませんでした。

于 2012-04-19T18:54:51.097 に答える