making restart upon signal TERM + vars()

This commit is contained in:
Alexander Mahr 2024-10-06 09:18:34 +02:00
parent 3eb8f65872
commit 7e36b6a74d
3 changed files with 44 additions and 10 deletions

View file

@ -10,11 +10,14 @@ services:
# the websocket-server
websocket-server:
stop_grace_period: 1s
restart: always
environment:
PYTHONUNBUFFERED: true
build: 'websocket-server'
expose:
- 1080
volumes:
- ./websocket-server/entrypoint.py:/mnt/entrypoint.py
# the client
client-test-websocket:
stop_grace_period: 1s

View file

@ -1,22 +1,36 @@
#!/usr/bin/env python
import asyncio
import signal
import sys
import json
from websockets.asyncio.server import serve
connected_clients = set()
def sigterm_handler(_signo, _stack_frame):
# Raises SystemExit(0):
sys.exit(0)
async def server(websocket):
msg = await websocket.recv()
print(f"IN : {msg}")
answer = f"echoing {msg}"
await websocket.send(answer)
print(f"OUT: {answer}")
print("the handler ist called",websocket.remote_address,"vars",json.dumps(websocket.__dict__,indent=4,default=lambda o: '<not serializable>'));
# while True:
# msg = await websocket.recv()
# print(f"IN : {msg}")
#
# answer = f"echoing {msg}"
#
# await websocket.send(answer)
# print(f"OUT: {answer}")
async def main():
async with serve(server, "0.0.0.0", 1080):
await asyncio.get_running_loop().create_future()
if __name__ == "__main__":
signal.signal(signal.SIGTERM, sigterm_handler)
print('AAAAANOWAAAsaa is this')
asyncio.run(main())

View file

@ -1,5 +1,22 @@
#!/bin/sh
set -x
safeexec() {
CMD="$1"
shift
test -x "$CMD" && exec "$CMD" "$@"
}
test "" = "$*" || { exec "$@"; }
echo "running /entrypoint.py"
exec /entrypoint.py
safeexec /mnt/entrypoint.py || safeexec /entrypoint.py
#
#trap "true" USR2
#while true
#do
# echo "running /entrypoint.py"
# ( /mnt/entrypoint.py || /entrypoint.py ) &
# THEPID=$!
# wait
# test "$?" -gt 128 && {
# kill "$THEPID"
# } || break
#done