1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#!/usr/bin/env python
import asyncio
import http
import os
import signal
from websockets.asyncio.server import serve
async def echo(websocket):
async for message in websocket:
await websocket.send(message)
def health_check(connection, request):
if request.path == "/healthz":
return connection.respond(http.HTTPStatus.OK, "OK\n")
async def main():
port = int(os.environ["PORT"])
async with serve(echo, "", port, process_request=health_check) as server:
loop = asyncio.get_running_loop()
loop.add_signal_handler(signal.SIGTERM, server.close)
await server.wait_closed()
if __name__ == "__main__":
asyncio.run(main())
|