在crontab中运行Django Management命令

时间:2018-06-09 17:31:47

标签: django amazon-ec2 cron ubuntu-16.04

我正在尝试运行Django后台任务提供的管理命令python manage.py process_tasks来运行我的后台任务。我想把它们作为一个cronjob运行。

为此,我使用命令sudo crontab -e

在cron选项卡中创建一个条目

我的crontab条目看起来像这样 -

*/1 * * * * . /var/www/cronjob.sh >> /var/www/crontab.log 2>&1

我在这里运行的shell脚本的内容是 -

#!/bin/bash
while true
do
 echo 'starting'
 sudo su ubuntu
 . /var/www/myproject/env/bin/activate
 . /var/www/myproject/.shahrukh_aliases
 python /var/www/myproject/src/manage.py process_tasks
 echo 'finished'
 sleep 2
done

但问题是我的EC2实例在一段时间后崩溃并且仅在我重新启动它之后才运行。我收到以下错误

-bash: fork: Cannot allocate memory

我认为它占用了所有内存,因此我的实例崩溃了。我不知道如何在cron作业中运行任务以及为什么它会消耗我的记忆。我想知道如何以cronjob的身份运行这项工作。 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案很简单。我仍然可以使用crontab来完成它。我只需要为process_tasks命令提供一个额外的参数。

所以我必须从crontab运行的命令是

python manage.py process_tasks --duration 59

因为我在每分钟后运行作业,上面的命令将运行后台任务59秒,然后结束自己,然后由cron重新启动。