1

我正在尝试使用django-utils在并行线程中异步启动许多命令(这些命令处理 99.99% 的 I/O)。但是,我不断收到以下错误:

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

函数 refreshDataAsync 位于维护接口内的 commands.py 中 - 维护接口位于已安装应用程序列表中。

我像这样运行队列消费者:

python .\manage.py queue_consumer

当我查看队列消费者日志时,它会告诉我它找到了函数(在初始化时):

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

不是一个直截了当的答案,但确实是一个不错的建议,只需使用 celery 和 django celery 来执行此异步处理。

您可以使用 django-utils 完成所有操作(至少在异步方面)以及更多(许多后端,您可以命名的任何类型的设置/参数),也很少有相关项目使用 celery 来做异步的事情(例如,您想使用 celery 发送电子邮件,您编写 0 行代码,有一个应用程序。)

于 2012-04-19T17:44:15.737 回答
0

问题是消费者正在导入与 django 代码库相同的库 - 但路径略有不同。

消费者正在进口

maintenanceInterface.commands.queuecmd_refreshDataAsync

并且代码显式调用了它上面的包:

WepPlatform.maintenanceInterface.commands.refreshDataAsync

所以消费者无法匹配并且不会运行该命令。

于 2012-04-19T18:54:51.097 回答