使用Python虚拟环境删除空文件夹的Cron作业

时间:2017-11-21 15:33:12

标签: django python-3.x cron

我有一个脚本,当从命令行调用以删除空文件夹时,工作没有问题。当在服务器(Ubuntu)上时,我激活虚拟环境,并导航到类似

的项目
cd djangoprojects/some_project

然后运行

python core/remove_empty_folders.py media False

一切正常。

然后我想用cron实现相同的脚本。我首先使上述脚本可执行。

这是我认为应该工作的(尝试了很多变种!)(全部在一行!)

/home/username/virtualenvs/some_project_env/bin/python 
/home/username/djangoprojects/some_project python core/remove_empty_folders.py media False

媒体文件夹的所有权是www-data

然而,它只是不起作用,我不知道为什么?我无法从cron获得有关问题的反馈意见,所以希望有人可以提供帮助。

非常感谢

1 个答案:

答案 0 :(得分:1)

嗯,如果你激活virtualenv时它可以工作,也许从cronjob那样做可能解决问题?也许是这样的:

*/10 * * * * source /home/username/virtualenvs/some_project_env/bin/activate && python /home/username/djangoprojects/some_project/core/remove_empty_folders.py media False

我定期使用激活虚拟环境的cronjobs,然后运行Django管理命令。如果您仍然遇到任何困难,将Python脚本转换为Django管理命令可能是另一种探索途径(这也可以让您利用哨兵记录来查看遇到的任何问题):

0 2 * * * source /home/projects/someproject/venv/bin/activate && /home/projects/someproject/appcode/manage.py refresh_data

修改 另一个调试步骤:您可以添加一些诊断打印语句,然后通过查看/ var / log / syslog或管道cron作业的输出来查看管理命令的输出。例如,

*/10 * * * * source /home/username/virtualenvs/some_project_env/bin/activate && python /home/username/djangoprojects/some_project/core/remove_empty_folders.py media False >> /var/log/mycronjob.txt

如果你这样做,只需确保你的cron用户对/ var / log或你把消息放在哪里都有文件权限。