Heroku如何查看时钟进程日志

wnavrhmk  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(122)

我最近在我的heroku应用(Python)中实现了一个时钟进程,每隔X小时将数据抓取到一个数据库中。在脚本中,我有一行代码,它应该在抓取开始时和结束时给我发送一封电子邮件。今天是它应该在UTC上午8点运行的第一天,它似乎运行得很好,因为我的网站上的数据已经更新了。
然而,我没有收到任何来自刮刀的电子邮件,所以我试图找到该特定dyno的日志,看看它是否暗示了为什么电子邮件没有发送。然而,我无法看到任何东西,甚至显示该进程今天上午运行。
使用下面的命令,我看到的是dyno进程在我上次部署Heroku时已经启动。但是没有任何迹象表明它今天运行成功了...尽管我知道它确实运行成功了。

heroku logs --tail --dyno clock

生成以下输出,这与我上次将应用程序部署到heroku时的输出相对应。

2021-04-10T19:25:54.411972+00:00 heroku[clock.1]: State changed from up to starting
2021-04-10T19:25:55.283661+00:00 heroku[clock.1]: Stopping all processes with SIGTERM
2021-04-10T19:25:55.402083+00:00 heroku[clock.1]: Process exited with status 143
2021-04-10T19:26:07.132470+00:00 heroku[clock.1]: Starting process with command `python clock.py --log-file -`
2021-04-10T19:26:07.859629+00:00 heroku[clock.1]: State changed from starting to up

我的问题是,是否有任何命令或地方可以检查Heroku以查看我的日志中的任何输出?例如,抛出的任何异常?如果我的时钟进程中有任何PRINT语句,这些语句将被打印到哪里?
谢谢你!

qnakjoqk

qnakjoqk1#

虽然这不是完整的答案,但是从Ruby gem 'ruby-clock'中,我们可以从开发人员那里得到一些见解
由于STDOUT在一定数量的数据进入之前不会刷新,因此如果在部署的环境(如Heroku,其中日志被重定向到另一个进程或文件)中查看日志,您可能不会立即看到ruby-clock启动消息或作业输出。要更改此行为并立即刷新日志,请将$stdout.sync = true添加到时钟文件的顶部。
所以我猜它与日志记录时刷新STDOUT有关,尽管我不确定如何在Python中执行此操作。
我进行了快速搜索,找到了this stackoverflow post

在Python 3中,print可以接受一个可选的flush参数:

print("Hello, World!", flush=True)

在Python 2中,在调用print之后,执行以下操作:

import sys
    sys.stdout.flush()

相关问题