Heroku调度器不会自动更改DB脚本,如果手动执行,则可以正常工作

2024-09-27 00:17:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用免费的Heroku调度器插件完成两个任务。 (不到10分钟的小任务应由Heroku调度员轻松处理)。你知道吗

在日志中,我看到Heroku调度器正在执行,但它似乎什么也没做。你知道吗

这是我的任务_任务.py)地址:

from alchemy import db_session
from models import User

all_users = User.query.all()
for user in all_users:
    if user.remind_email_sent == False:
        print "SEND REMIND EMAIL HERE", user.id
        setattr(user, "remind_email_sent", True)

db_session.commit()

heroku scheduler中的任务如下: enter image description here

日志:heroku调度程序已执行(但我看不到打印):

Aug 10 14:31:26 monteurzimmer-test app[api] notice Starting process with command `heroku run python my_task.py` by user scheduler@addons.heroku.com
Aug 10 14:31:32 monteurzimmer-test heroku[scheduler] notice Starting process with command `heroku run python my_task.py`
Aug 10 14:31:33 monteurzimmer-test heroku[scheduler] notice State changed from starting to up
Aug 10 14:31:34 monteurzimmer-test heroku[scheduler] notice State changed from up to complete
Aug 10 14:31:34 monteurzimmer-test heroku[scheduler] notice Process exited with status 127

编辑:

好的,确实有一个错误,在日志中我没有显示info。错误显示在此处:

Aug 10 15:02:32 monteurzimmer-test app[scheduler] info bash: heroku: command not found

如果我通过herokucli手动运行脚本(heroku run python my_task.py),它可以正常工作,当前6个用户的所有项都设置为True

那么为什么调度程序在这里不工作呢?确实有错误,请参见编辑。你知道吗

现在它是一个小的测试数据库,将来计划用它来代替打印给每个用户发送一封电子邮件,将会有几百个用户。你知道吗


Tags: runfrompytestherokuwithall调度
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:38

我发现错误后,解决方法其实很简单。它告诉我:

bash: heroku: command not found

这意味着heroku已经在执行bash,因此不知道heroku的命令。您已经在项目文件夹中,只需删除heroku run即可:

python my_task.py

这里需要注意的是:我花了很长时间才找到错误。我假设没有错误,因为我从不在日志中显示info内容(我使用LogDNA)。所以在这种情况下,你应该查看日志中的所有内容。你知道吗

相关问题 更多 >

    热门问题