У меня есть общесистемная служба, которая запускается после службы ssh на Raspberry Pi.Вот файл службы:
[Unit]
Description=myscriptservice
After=ssh.service
Requires=ssh.service
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/python3 -u /home/pi/script.py > /home/pi/script.log 2>&1
[Install]
WantedBy=multi-user.target
Сценарий запускает сервер WebSocket, к которому клиент (который является веб-приложением на том же компьютере) пытается подключаться каждые 30 секунд.Вот код сценария:
def start_server():
try:
application = tornado.web.Application([(r"/", EchoWebSocket)], debug=True)
ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain('/home/pi/cert.crt',
'/home/pi/cert.pem')
server = HTTPServer(application, ssl_options=ssl_ctx)
server.listen(5555)
tornado.ioloop.IOLoop.current().start()
except BaseException as error:
log_error(str(error))
sys.exit('got error in server')
finally:
log_info("started server")
Давайте перейдем к проблеме.Когда скрипт запускается при запуске системы как служба systemd, я получаю это предупреждение Sep 23 08:46:37 hostname python3[429]: WARNING:tornado.general:SSL Error on 9 ('192.168.40.210', 37674): [SSL: SSL_SESSION_ID_CALLBACK_FAILED] ssl session id callback failed (_ssl.c:720)
Если я просто перезапускаю службу и клиент пытается подключиться снова, она работает.Так может быть, что при запуске отсутствует определенная зависимость?Я искал в Интернете и спросил своих коллег.Я не могу найти ответ.Так что это моя последняя надежда.