djutils queue命令未被发现

时间:2012-04-18 19:34:25

标签: python django multithreading task-queue

我正在尝试使用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

仍然抛出异常。

我错过了某个地方的一步吗?

2 个答案:

答案 0 :(得分:1)

不是一个简单的答案,但确实是一个很好的建议,只需使用芹菜和django芹菜来做这个异步处理。

你可以用django-utils(至少在异步方面)做更多的事情(更多的后端,任何你可以命名的设置/参数),也有很少的相关项目使用芹菜做异步的事情(例如,你想用celery发送电子邮件,你写了0行代码,有一个应用程序。)

答案 1 :(得分:0)

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

消费者正在导入

maintenanceInterface.commands.queuecmd_refreshDataAsync

代码明确地调用了它上面的包:

WepPlatform.maintenanceInterface.commands.refreshDataAsync

因此,消费者无法匹配,也无法运行该命令。