Cron 终止 Python 脚本?

发布于 2024-10-08 08:11:29 字数 515 浏览 5 评论 0原文

我有一个“长”Python 脚本,大约需要 45[分钟] 才能运行。我使用另一个(“调度程序”脚本)python 脚本来运行这个长脚本。当我使用终端运行“调度程序”脚本时,一切正常(意味着“长”脚本运行没有任何问题)。

我经历了一些挣扎,但最终成功添加了“调度程序”脚本以每分钟运行一次 cron。所以它现在“运行”其他脚本并且工作正常。

问题是:每当脚本(由“调度程序”“运行”)有一行内容为:

print "hello"

或任何“打印”语句时,cron 作业就会运行,但会在 20-30 秒后终止。当我删除任何“打印”语句时,cron 会正常运行作业并且不会终止。

我想解决这种情况,并让脚本继续运行,即使其中有一些“打印”语句。有什么提示如何做吗?

PS 在“调度程序”中,我用来

subprocess.Popen([sys.executable, command])

“运行”所有其他 python 脚本。

I have a 'long' python script that takes roughly 45[min] to run. I use another (a 'scheduler' script) python script to run this long script. When I run the 'scheduler' script using the terminal, everything works perfectly (meaning, the 'long' script runs without any issues).

I had some struggles, but eventually succeeded adding the 'scheduler' script to run through cron every minute. so it now 'runs' other script and works OK.

Here is the problem: whenever a script (that is being 'run' by the 'scheduler') has a line that says:

print "hello"

or any 'print' statement, the cron job runs, but terminates after 20-30 seconds. When I remove any 'print' statements, cron runs the jobs normally and does not terminate.

I'd like to fix this situation, and have the scripts continue to run even if they have some 'print' statements in them. any hints how to do it?

P.S. from within the 'scheduler', I use

subprocess.Popen([sys.executable, command])

to 'run' all other python scripts.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葮薆情 2024-10-15 08:11:29

我有预感,这是由于 cron 处理标准输出的方式造成的。你如何重定向输出?

来自http://aplawrence.com/BDD/bbcronbasics.html

输出

通常任何程序的输出都是
发送到 STDOUT(标准输出)和
通常会出现在某人的显示器上
屏幕。对于由 cron 启动的作业,
STDOUT 将定向到本地
邮件子系统,这意味着任何输出
由 cron 作业生成的将被邮寄
拥有该作业的用户。如果这个
不可取,您应该采取措施
将 cron 作业的输出重定向到
一个文件。还建议您
将 STDERR(标准错误)重定向到
文件以便能够分析任何
您的 cron 作业中存在异常
执行。

I have a hunch that it's due to the way cron handles stdout. How are you redirecting output?

From http://aplawrence.com/BDD/bbcronbasics.html:

OUTPUT

Normally the output of any program is
sent to STDOUT (standard out) and
usually winds up on someone's display
screen. For jobs started by cron,
STDOUT will be directed to the local
mail subsystem, which means any output
generated by a cron job will be mailed
to the user owning the job. If this
is not desirable you should take steps
to redirect your cron job's output to
a file. It is also suggested you
redirect STDERR (standard error) to a
file so as to be able to analyze any
anomalies in your cron job's
execution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文