带有celery settings的 Django 应用程序,任务总是“待处理”。我该如何修复这个错误?
我在 settings.py 中有以下设置
CELERY_BROKER_URL = "amqp://admin:admin2017@localhost"
CELERY_IMPORTS = ("web.task",)
当我使用表单向 celery 提交任务时,我看到状态始终处于挂起状态
以下代码用于模型(我也有一个tasks.py)
class AnaysisStatus(models.IntegerChoices):
PENDING = 1
COMPLETED = 2
FAILED = 0
class Analysis(models.Model):
STATUS_CHOICES = ((1,"PENDING"),(2,"COMPLETED"),(0,"FAILED"))
user = models.ForeignKey(User,on_delete=models.CASCADE)
status = models.IntegerField(choices=AnaysisStatus.choices,null= True)
created_at = models.DateTimeField(auto_now_add=True,null=True)
file = models.FileField(null=True)
data = models.JSONField(null=True)
我对 celery 和 django 非常陌生,因此非常感谢任何帮助。
编辑:我在本地安装了 rabittMQ 并设置了虚拟主机权限并启动了一个工人我现在看到这个错误:
消息头的完整内容: {'lang': 'py', 'task': 'web.task.switch', 'id': '250f7475-5186-4f68-a8ac-cb19802221cd', 'shadow': None ,'eta':无,'expires':无,'group':无,'group_index':无,'重试':0,'timelimit':[无,无],'root_id':'250f7475-5186- 4f68-a8ac-cb19802221cd','parent_id':无,'argsrepr':“('admin-1652754818.sol','0.4.24',24)”,'kwargsrepr':'{}','origin': 'gen19316@MacBook-Air.hitronhub.home', 'ignore_result': False}
此任务的交付信息是:{'consumer_tag': 'None4', 'delivery_tag': 1, 'redelivered': False, 'exchange': '', 'routing_key': 'celery'} Traceback(最近一次通话最后一次):文件“/opt/homebrew/lib/python3.9/site-packages/celery/worker/consumer/consumer.py”,第 591 行,on_task_received strategy = strategy[type_] KeyError: 'web.task.switch'
编辑:任何可以帮助解决这个问题的人都会非常感激,在过去的 72 小时内我已经尝试了所有方法,并且迫切需要任何可能帮助或指引我正确方向的信息。