我的任务得到HardTimeLimit异常。日志检查后发现-
- 任务未被芹菜接收(任务id没有"Got task from broker:"消息)
- 相同id的任务几天前执行了。
任务id由@task装饰器自动分配,任务由django启动,每天有~2k个任务(每天有~30个冲突)。
ID的碰撞是如何可能的?如何预防?
这应该是不可能的,即使它应该是非常罕见的。我的猜测是,在异常之后,同样的任务被执行了第二次。也许你的路由密钥有问题,因为工作人员没有得到任务?或者代理有问题,我看到RabbitMQ有一些有趣的问题。删除它的数据库(RABBITMQ_MNESIA_BASE)在我的情况下有帮助。