【发布时间】:2018-11-19 11:20:19
【问题描述】:
我正在尝试运行 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 运行。 提前感谢您的帮助
【问题讨论】:
-
while 总是正确的,所以这个过程永远不会结束..
-
我需要每 2 秒运行一次,这就是我使用循环的原因,在这种情况下我该怎么办?
-
但你每分钟都开始。每一个都需要永远。 Cronjob 不是去这里的方法。如果你需要像这样运行一些后台进程,最好使用 celery 或类似的。
-
Celery 对我的用例来说太高级了,有没有其他方法可以做到这一点?
标签: django amazon-ec2 cron ubuntu-16.04