为Python脚本创建服务

时间:2017-06-27 13:39:16

标签: python service systemd

我有一个包含这样循环的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文件以允许运行脚本而不等待它结束或我是否必须更改“无限”循环?

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我认为可能需要一些有关您的平台的其他信息才能正确回答这个问题。我之所以这么说,是因为我并不熟悉您所拥有的服务格式。

但是,如果您希望采用纯Python方式执行此操作,则可以使用daemonocle包来创建服务。 https://pypi.python.org/pypi/daemonocle

或者,以及我通常完成此任务的方式,您可以使用这样的守护进程骨架: https://gist.github.com/shawnrice/11076762
使用此方法,您需要修改此模板以运行脚本并在首次运行deamon脚本后将其安装到/etc/init.d中,您应该能够使用标准的" service"控制你的服务。