如何在Crontab中为Django管理命令ping_google传递参数?
关于Crontab中给Django manage.py传递ping_google参数的问题
嘿,你的Crontab配置里的参数传递方式其实是完全正确的!
Crontab执行命令的逻辑和你在终端直接敲命令是一致的:只要把命令、脚本路径和后续参数按顺序排列就行,你写的*/10 * * * * /home/project/.virtualenvs/app/bin/python /home/project/workspace/app-backend/django-app/manage.py ping_google /sitemap.xml完全符合这个规则,参数/sitemap.xml会被正确传递给ping_google命令。
不过可以给你几个额外的小建议,避免后续可能出现的问题:
- 确认路径准确性:一定要保证虚拟环境的Python解释器路径
/home/project/.virtualenvs/app/bin/python和manage.py的路径都没有写错,不然Crontab执行时会因找不到文件而失败。 - 指定工作目录:有些Django命令依赖项目根目录的配置,你可以在Crontab命令前加上目录切换指令,确保命令在项目根目录下执行,比如:
*/10 * * * * cd /home/project/workspace/app-backend/django-app && /home/project/.virtualenvs/app/bin/python manage.py ping_google /sitemap.xml - 添加日志输出:为了方便排查执行是否成功,可以把命令的输出和错误信息重定向到日志文件,比如:
这样执行过程中的所有信息都会被记录到*/10 * * * * cd /home/project/workspace/app-backend/django-app && /home/project/.virtualenvs/app/bin/python manage.py ping_google /sitemap.xml >> /var/log/django_ping_google.log 2>&1/var/log/django_ping_google.log里,方便后续查看。
另外,如果你还是担心参数传递的问题,可以先在终端里用虚拟环境的Python解释器直接执行这条命令,看看能不能正常运行:
/home/project/.virtualenvs/app/bin/python /home/project/workspace/app-backend/django-app/manage.py ping_google /sitemap.xml
如果终端里能正常运行,那Crontab里的配置肯定也是没问题的。
内容的提问来源于stack exchange,提问作者Yash Suryavanshi
相关产品推荐
相关产品推荐

