[英]How to run .py files as cronjob in aws?
我有一个 Django 应用程序,它部署到 Amazon Elastic Beanstalk(在 64 位 Amazon Linux 2/3.1.1 上运行的 Python 3.7)。 我一直在尝试将 .py 文件作为每天凌晨 4 点在 AWS 中工作的cronjob
运行,并且我已将.config
文件创建到.ebextensions
中,如下所示。
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"
run_spiders.py 文件:
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?
根据评论。
该问题是由task_process.sh
失败引起的。 通常,如果task_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 中运行时task_process.sh
问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.