django-celery-beat部署到服务器上
启动celery beat -A name -l info后
发现在数据库中配置的定时任务根本就没执行
查看beat日志,发现启动后,就没派发任何任务
测试环境都是好的
生产环境有问题
排查后发现,生产环境的django_celery_beat_periodictask表是从测试环境直接拷贝数据过去的
表里last_run_at里,有测试环境上次运行的时间数据

查看了下django-celery-beat的源代码,beat每次会取出表里的last_run_at的时间加上间隔时间和服务器的当前时间进行判断,若时间到了,就派发任务。
由于测试环境虚拟机时间和正式环境服务器的时间有点差异。测试机时间早于正常的时间。导致正式环境一直认为还没到派发时间,所以没有派发
把表里的时间改一下,就正常了。