首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使Python服务失败,它也会被重新弹出为成功

即使Python服务失败,它也会被重新弹出为成功
EN

Stack Overflow用户
提问于 2020-07-04 02:45:20
回答 1查看 168关注 0票数 0

我在raspberry pi上运行服务,这意味着在启动时运行python脚本。有时候python脚本会失败,但是当它失败时,服务仍然会报告它成功,这是错误的。

下面是python脚本:

代码语言:javascript
复制
import cec
import sys
import time
import configparser
from tuya.devices import TuyaSmartSwitch


class SmartSwitch:
    def __init__(self, config_path):
        CONFIG = configparser.ConfigParser()
        CONFIG.read(config_path)

        try:  # connect to the smart switch
            self.device = TuyaSmartSwitch(
                username=CONFIG["TUYA"]["username"],
                password=CONFIG["TUYA"]["password"],
                location=CONFIG["TUYA"]["location"],
                device=CONFIG["TUYA"]["device"])
        except:
            print("Could not connect to the switch")
            sys.exit()

    def turn_off(self):
        self.device.turn_off()

    def turn_on(self):
        self.device.turn_on()

这是终端输出:

代码语言:javascript
复制
pi@raspberrypi:~/subwoofer_switch $ sudo systemctl status subwoofer.service
● subwoofer.service - My script to control suboowfer smart switch
   Loaded: loaded (/etc/systemd/system/subwoofer.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Thu 2020-07-02 19:46:43 BST; 23h ago
  Process: 541 ExecStart=/usr/bin/python3 /home/pi/subwoofer_switch/subwoofer_control.py (code=exited, status=0/SUCCESS)
 Main PID: 541 (code=exited, status=0/SUCCESS)

Jul 02 19:46:30 raspberrypi systemd[1]: Started My script to control suboowfer smart switch.
Jul 02 19:46:43 raspberrypi python3[541]: Could not connect to the switch
Jul 02 19:46:43 raspberrypi systemd[1]: subwoofer.service: Succeeded.

正如您所看到的,脚本连接确实失败了,sys.exit()应该已经运行并关闭了脚本,但它仍然报告成功。

服务代码如下:

代码语言:javascript
复制
[Unit]
Description=My script to control suboowfer smart switch
After=multi-user.target

[Service]
Restart=on-failure
RestartSec=10s
Type=idle
ExecStart=/usr/bin/python3 /home/pi/subwoofer_switch/subwoofer_control.py

[Install]
WantedBy=multi-user.target

我不确定我做错了什么,因为我希望如果服务启动失败,它将再次尝试运行python脚本

EN

回答 1

Stack Overflow用户

发布于 2020-07-11 22:16:10

如果像您的代码中一样,没有向sys.exit()提供任何参数,则其缺省值为0,这意味着“成功”。因此,如果您打算以失败退出,请使用:

代码语言:javascript
复制
sys.exit(1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62721139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档