【问题标题】:How to run .py files as cronjob in aws?如何在aws中将.py文件作为cronjob运行?
【发布时间】:2021-01-13 17:25:41
【问题描述】:

我有一个 Django 应用程序,它已部署到 Amazon Elastic Beanstalk(在 64 位 Amazon Linux 2/3.1.1 上运行的 Python 3.7)。我一直在尝试以cronjob 的形式运行一个 .py 文件,该文件每天凌晨 4 点在 AWS 中工作,我已经在 .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"

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?

【问题讨论】:

  • “它不起作用”不是很具体。为什么它不起作用?任何错误、超时、意外行为?
  • 我没有收到任何错误或超时等。但是我的 spider_name 是“nigde”并且它没有更新。
  • 也许你的task_process.sh 崩溃了。您可以添加exec &>> /tmp/cron_capture_log.txt 来记录其输出,如here 所示。也许它会有一些关于任何错误的信息,如果有的话?
  • 非常感谢。我得到了 txt 的所有回报,现在我将修复所有错误。
  • 当然,请这样做

标签: python django amazon-web-services cron


【解决方案1】:

基于 cmets。

问题是由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"

以上内容有助于识别 task_process.sh 在 cron 中运行时的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 2022-01-19
    • 2021-03-31
    • 2020-05-26
    • 2021-10-16
    • 1970-01-01
    • 2015-03-28
    • 2019-06-08
    相关资源
    最近更新 更多