Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在aws中将.py文件作为cronjob运行?_Python_Django_Amazon Web Services_Cron - Fatal编程技术网

Python 如何在aws中将.py文件作为cronjob运行?

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

我有一个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: "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获得了所有返回,我将修复所有错误。当然,请这样做