Python 如何在aws中将.py文件作为cronjob运行?
我有一个Django应用程序,它被部署到AmazonElasticBeanstalk(运行在64位AmazonLinux2/3.1.1上的Python 3.7)。我一直在尝试以Python 如何在aws中将.py文件作为cronjob运行?,python,django,amazon-web-services,cron,Python,Django,Amazon Web Services,Cron,我有一个Django应用程序,它被部署到AmazonElasticBeanstalk(运行在64位AmazonLinux2/3.1.1上的Python 3.7)。我一直在尝试以cronjob的形式运行一个.py文件,该文件在AWS中每天凌晨4点工作,并且我已经在.ebextensions中创建了一个.config文件,如下所示 cron.config文件: files: "/etc/cron.d/cron_process": mode: "0
cronjob
的形式运行一个.py文件,该文件在AWS中每天凌晨4点工作,并且我已经在.ebextensions
中创建了一个.config
文件,如下所示
cron.config文件:
files:
"/etc/cron.d/cron_process":
mode: "000644"
owner: root
group: root
content: |
0 4 * * * root /usr/local/bin/task_process.sh
"/usr/local/bin/task_process.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
date > /tmp/date
source /var/app/venv/staging-LQM1lest/bin/activate
cd /var/app/current
python Bot/run_spiders.py
exit 0
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/cron_process.bak"
from first_bot.start import startallSpiders
from .models import Spiders
import importlib
test = Spiders.objects.get(id=1)
test.spider_name = "nigdehalk"
test.save()
运行\u spider.py文件:
files:
"/etc/cron.d/cron_process":
mode: "000644"
owner: root
group: root
content: |
0 4 * * * root /usr/local/bin/task_process.sh
"/usr/local/bin/task_process.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
date > /tmp/date
source /var/app/venv/staging-LQM1lest/bin/activate
cd /var/app/current
python Bot/run_spiders.py
exit 0
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/cron_process.bak"
from first_bot.start import startallSpiders
from .models import Spiders
import importlib
test = Spiders.objects.get(id=1)
test.spider_name = "nigdehalk"
test.save()
我正在尝试更改我的一个对象的属性以进行测试,但没有成功。我错过什么了吗?如何创建此cronjob?基于注释
该问题是由任务\u进程.sh失败引起的。通常,如果task\u process.sh
失败,cron不会显示错误消息。要帮助解决此问题,可以使用以下命令将所有输出重定向到文本文件:
exec &>> /tmp/cron_capture_log.txt
随后,EB配置文件可以是:
files:
"/etc/cron.d/cron_process":
mode: "000644"
owner: root
group: root
content: |
0 4 * * * root /usr/local/bin/task_process.sh
"/usr/local/bin/task_process.sh":
mode: "000755"
owner: root
group: root
content: |
#!/bin/bash
exec &>> /tmp/cron_capture_log.txt
date > /tmp/date
source /var/app/venv/staging-LQM1lest/bin/activate
cd /var/app/current
python Bot/run_spiders.py
exit 0
commands:
remove_old_cron:
command: "rm -f /etc/cron.d/cron_process.bak"
上面的内容有助于确定在cron中运行时任务进程的问题。“它不工作”不是很具体。为什么它不起作用?任何错误、超时、意外行为?我没有收到任何错误或超时等。但是我的蜘蛛名称为“nigde”,并且没有更新。可能是您的任务进程。sh
崩溃。可以添加exec&>/tmp/cron\u capture\u log.txt
来记录其输出,如图所示。如果有任何错误,它可能会有一些关于错误的信息。非常感谢。我现在用txt获得了所有返回,我将修复所有错误。当然,请这样做