我正在尝试使用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
仍然抛出异常。
我错过了某个地方的一步吗?
答案 0 :(得分:1)
不是一个简单的答案,但确实是一个很好的建议,只需使用芹菜和django芹菜来做这个异步处理。
你可以用django-utils(至少在异步方面)做更多的事情(更多的后端,任何你可以命名的设置/参数),也有很少的相关项目使用芹菜做异步的事情(例如,你想用celery发送电子邮件,你写了0行代码,有一个应用程序。)
答案 1 :(得分:0)
问题是消费者正在导入与django代码库相同的库 - 但路径略有不同。
消费者正在导入
maintenanceInterface.commands.queuecmd_refreshDataAsync
代码明确地调用了它上面的包:
WepPlatform.maintenanceInterface.commands.refreshDataAsync
因此,消费者无法匹配,也无法运行该命令。