出现的问题
'Run "python manage.py crontab add" again to resolve this issue!' % job_hash
RuntimeError: No job with hash erp/erp-20150504/manage.py found. It seems the crontab is out of sync with your settings.CRONJOBS. Run "python manage.py crontab add" again to resolve this issue!
从错误信息可以明显看出来,是job_hash有误引起的问题。
于是到Python的disk-package目录找到django_crontab源码,加几个print语句进行调试,发现从crontab配置文件中解析job_hash的时候有bug.
crontab.py 文件中第104和118行:
self._get_job_by_hash(job[0][2][job[0][2].find('run') + 12:].split()[0]);
如果脚本路径中包含'run',则hash串的起始位置是错误的,导致解析出来的job_hash有误。
将这行代码做如下修改可以解决这个问题:
self.__get_job_by_hash(job[0][2].split()[0])