我正在尝试运行Django后台任务提供的管理命令python manage.py process_tasks
来运行我的后台任务。我想把它们作为一个cronjob运行。
为此,我使用命令sudo crontab -e
我的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的身份运行这项工作。 感谢您的帮助
答案 0 :(得分:0)
我的问题的解决方案很简单。我仍然可以使用crontab来完成它。我只需要为process_tasks命令提供一个额外的参数。
所以我必须从crontab运行的命令是
python manage.py process_tasks --duration 59
因为我在每分钟后运行作业,上面的命令将运行后台任务59秒,然后结束自己,然后由cron重新启动。