Hello Trystan,
I started the scripts one by one whilst service-runner was down, and by the time I’d finished, it was up and running again.
Below the output from emonpi2 :
pi@emonpi2:\~ $ systemctl status service-runner --no-pager -n 50
● service-runner.service - Emoncms service-runner Input Script
Loaded: loaded (/etc/systemd/system/service-runner.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-10-05 19:07:39 CEST; 24s ago
Docs: https://github.com/emoncms/emoncms/blob/master/scripts/services/install-service-runner-update.md
Main PID: 177571 (python3)
Tasks: 1 (limit: 2321)
CPU: 169ms
CGroup: /system.slice/service-runner.service
└─177571 /usr/bin/python3 /var/www/emoncms/scripts/services/servic…
Oct 05 19:07:39 emonpi2 systemd\[1\]: Started service-runner.service - Emoncm…ipt.
Oct 05 19:07:40 emonpi2 service-runner\[177571\]: Starting service-runner
Oct 05 19:07:40 emonpi2 service-runner\[177571\]: Connected to redis server
Hint: Some lines were ellipsized, use -l to show in full.
pi@emonpi2:\~ $ systemctl show service-runner -p NRestarts
NRestarts=2970
pi@emonpi2:\~ $ sudo journalctl -u service-runner --since "1 day ago" --no-pager | tail -n 100
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/commands/core.py", line 4862, in blpop
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: return self.execute_command("BLPOP", \*keys)
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 867, in execute_command
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: return self.\_execute_command(\*args, \*\*options)
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 889, in \_execute_command
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: result = conn.retry.call_with_retry(
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/retry.py", line 132, in call_with_retry
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: raise error
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/retry.py", line 120, in call_with_retry
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: return do()
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 890, in
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: lambda: self.\_send_command_parse_response(
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 819, in \_send_command_parse_response
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: return self.parse_response(conn, command_name, \*\*options)
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 935, in parse_response
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: response = connection.read_response()
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/connection.py", line 1407, in read_response
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: response = self.\_parser.read_response(
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/resp3.py", line 40, in read_response
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: result = self.\_read_response(
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/resp3.py", line 65, in \_read_response
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: raw = self.\_buffer.readline(timeout=timeout)
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/socket.py", line 117, in readline
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: self.\_read_from_socket(timeout=timeout)
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/socket.py", line 77, in \_read_from_socket
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: raise TimeoutError("Timeout reading from socket")
Oct 05 19:10:06 emonpi2 service-runner\[177930\]: redis.exceptions.TimeoutError: Timeout reading from socket
Oct 05 19:10:06 emonpi2 systemd\[1\]: service-runner.service: Main process exited, code=exited, status=1/FAILURE
Oct 05 19:10:06 emonpi2 systemd\[1\]: service-runner.service: Failed with result 'exit-code'.
Oct 05 19:10:37 emonpi2 systemd\[1\]: service-runner.service: Scheduled restart job, restart counter is at 2971.
Oct 05 19:10:37 emonpi2 systemd\[1\]: Stopped service-runner.service - Emoncms service-runner Input Script.
Oct 05 19:10:37 emonpi2 systemd\[1\]: Started service-runner.service - Emoncms service-runner Input Script.
Oct 05 19:10:37 emonpi2 service-runner\[178021\]: Starting service-runner
Oct 05 19:10:37 emonpi2 service-runner\[178021\]: Connected to redis server
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: Traceback (most recent call last):
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/socket.py", line 64, in \_read_from_socket
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: data = sock.recv(socket_read_size)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: TimeoutError: timed out
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: During handling of the above exception, another exception occurred:
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: Traceback (most recent call last):
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/var/www/emoncms/scripts/services/service-runner/service-runner.py", line 210, in
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: main()
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/var/www/emoncms/scripts/services/service-runner/service-runner.py", line 146, in main
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: packed = server.blpop(KEYS)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/commands/core.py", line 4862, in blpop
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: return self.execute_command("BLPOP", \*keys)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 867, in execute_command
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: return self.\_execute_command(\*args, \*\*options)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 889, in \_execute_command
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: result = conn.retry.call_with_retry(
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/retry.py", line 132, in call_with_retry
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: raise error
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/retry.py", line 120, in call_with_retry
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: return do()
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 890, in
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: lambda: self.\_send_command_parse_response(
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 819, in \_send_command_parse_response
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: return self.parse_response(conn, command_name, \*\*options)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/client.py", line 935, in parse_response
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: response = connection.read_response()
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/connection.py", line 1407, in read_response
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: response = self.\_parser.read_response(
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/resp3.py", line 40, in read_response
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: result = self.\_read_response(
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/resp3.py", line 65, in \_read_response
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: raw = self.\_buffer.readline(timeout=timeout)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/socket.py", line 117, in readline
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: self.\_read_from_socket(timeout=timeout)
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: File "/home/pi/.local/lib/python3.11/site-packages/redis/\_parsers/socket.py", line 77, in \_read_from_socket
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: raise TimeoutError("Timeout reading from socket")
Oct 05 19:11:36 emonpi2 service-runner\[178021\]: redis.exceptions.TimeoutError: Timeout reading from socket
Oct 05 19:11:36 emonpi2 systemd\[1\]: service-runner.service: Main process exited, code=exited, status=1/FAILURE
Oct 05 19:11:36 emonpi2 systemd\[1\]: service-runner.service: Failed with result 'exit-code'.
Oct 05 19:12:06 emonpi2 systemd\[1\]: service-runner.service: Scheduled restart job, restart counter is at 2972.
Oct 05 19:12:06 emonpi2 systemd\[1\]: Stopped service-runner.service - Emoncms service-runner Input Script.
Oct 05 19:12:06 emonpi2 systemd\[1\]: Started service-runner.service - Emoncms service-runner Input Script.
Oct 05 19:12:06 emonpi2 service-runner\[178089\]: Starting service-runner
Oct 05 19:12:06 emonpi2 service-runner\[178089\]: Connected to redis server
pi@emonpi2:\~ $ python3 -c "import redis; print(redis.**version**)"
8.1.0
pi@emonpi2:\~ $ cat /etc/os-release | head -n 4
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"