通过systemd服务获取地址已在使用中运行tcp服务器的问题

问题描述 投票:0回答:1

我正在尝试运行SocketServer.TCPServer

昨天昨天午夜我把代码进行审查

https://codereview.stackexchange.com/q/232879/22943

但是我无法使TCPServerSystemd一起使用,现在,我终于确定了整个问题出在运行看着journalctl日志的TCPServer的位置。

Nov 24 13:33:06 rockpro64 systemd[1393]: Started TCP Server to recieve data from Particle Photon to upload to MySql
Nov 24 13:33:06 rockpro64 python3[1733]: inside main module.
Nov 24 13:33:06 rockpro64 python3[1733]: Traceback (most recent call last):
Nov 24 13:33:06 rockpro64 python3[1733]:   File "/usr/local/iot/home_iot/tcpserver.py", line 92, in <module>
Nov 24 13:33:06 rockpro64 python3[1733]:     main()
Nov 24 13:33:06 rockpro64 python3[1733]:   File "/usr/local/iot/home_iot/tcpserver.py", line 83, in main
Nov 24 13:33:06 rockpro64 python3[1733]:     server = Server(server_address, ParticlePhotonRequestHandler)
Nov 24 13:33:06 rockpro64 python3[1733]:   File "/usr/local/iot/home_iot/tcpserver.py", line 58, in __init__
Nov 24 13:33:06 rockpro64 python3[1733]:     TCPServer.__init__(self, server_address, handler_cls, bind_and_activat
Nov 24 13:33:06 rockpro64 python3[1733]:   File "/usr/lib/python3.6/socketserver.py", line 456, in __init__
Nov 24 13:33:06 rockpro64 python3[1733]:     self.server_bind()
Nov 24 13:33:06 rockpro64 python3[1733]:   File "/usr/lib/python3.6/socketserver.py", line 470, in server_bind
Nov 24 13:33:06 rockpro64 python3[1733]:     self.socket.bind(self.server_address)
Nov 24 13:33:06 rockpro64 python3[1733]: OSError: [Errno 98] Address already in use
Nov 24 13:33:06 rockpro64 systemd[1393]: photon_uploader.service: Main process exited, code=exited, status=1/FAILUR
Nov 24 13:33:06 rockpro64 systemd[1393]: photon_uploader.service: Failed with result 'exit-code'.

从我的服务部门,我摆脱了套接字,并做了一个简化的版本:

[Unit]
Description=TCP Server to recieve data from Particle Photon to upload to MySql.
After=multi-user.target
Wants=network-online.target
After=network-online.target


[Service]
Type=idle
RestartSec=6
EnvironmentFile=/home/rock64/.config/systemd/user/photon_uploader.env
ExecStart=/usr/bin/python3 /usr/local/iot/home_iot/tcpserver.py

[Install]
WantedBy=multi-user.target

仍然出现相同的错误Address Already in use

python-3.x sockets systemd tcpserver socketserver
1个回答
0
投票

已经使用的地址通常会出于两个原因出现:

  1. 该地址实际上正在由另一个正在运行的进程使用。您可以通过运行netstat -pnutl

© www.soinside.com 2019 - 2024. All rights reserved.