场景:
接上一篇,两个项目之间要做回调,都要启动celery。但是在同一台服务器上启动两次的话直接就GG了。
解决方法:
从报错上看像是任务冲突,大概看了下celery工作过程,把问题定位在redis上。
同一台机器启动多个celery,BROKER_URL必须不同才行。Redus在Celery体系中充当消息中间件(message broker)作用,如果都放在一个redis库中,当两个celery都启动时,读取任务会将另一个项目的任务也读取过来,直接报错。
因此直接修改:
BROKER_URL = 'redis://127.0.0.1:6379/3'
为
BROKER_URL = 'redis://127.0.0.1:6379/4'
Redis 16个库任你选