【发布时间】:2017-06-27 13:39:15
【问题描述】:
我有一个包含如下循环的 Python 脚本:
while True:
if p.poll(waitTime):
if j.process() == journal.APPEND:
for entry in j:
process_data(entry))
目前,我的服务如下所示:
[Unit]
Description=Journald shipper
Requires=systemd-journald.service
After=systemd-journald.service
[Service]
Type=forking
ExecStart=/usr/bin/myScript.py
[Install]
WantedBy=multi-user.target
我目前遇到的问题是 «start» 命令返回超时。 这是合乎逻辑的,因为脚本永远不会完成,但服务永远不会启动:(
所以,我认为我做错了。我是否必须更改.service 文件以允许运行脚本而无需等待脚本结束,还是必须更改我的“无限”循环?
我该怎么做呢?
【问题讨论】:
-
if p.poll(waitTime):是错误的。它应该检查脚本是否已经结束,但如果脚本失败并返回零代码则失败。请改用if p.poll(waitTime) is not None:。