保持WebSocket打开的正确方法

3phpmpom  于 2023-02-19  发布在  其他
关注(0)|答案(2)|浏览(140)

因此,我在节点上运行WebSocket,它通过Python在端口80上运行。问题是,当收到许多请求时,WebSocket脚本或端口80会被终止。我使用bash脚本创建了一个检查器,它每3分钟作为cron作业运行一次,使用netcat检查端口80是否正在运行,如果没有,则重新运行脚本,因此我的问题是,有没有什么好的方法来保持WebSocket脚本运行或保持端口80运行,因为3分钟是不够的,因为它的死亡很快。我听说过systemd服务是它比运行cron作业每3分钟更好?如果是,你能给我一些样本如何做到这一点。谢谢!
通过cron作业使用检查器(bash脚本),检查netcat上的端口80是否打开,如果未打开,则每3分钟重新运行一次脚本,但这还不够

u4dcyp6a

u4dcyp6a1#

提供WebSocket服务器代码示例会很有用,我猜您使用的是类似websockets + asyncio的代码,例如echo server

#!/usr/bin/env python

import asyncio
import websockets

async def echo(websocket):
    async for message in websocket:
        await websocket.send(message)

async def main():
    async with websockets.serve(echo, "localhost", 80):
        await asyncio.Future()  # run forever

asyncio.run(main())

使用systemd对你来说很有用,因为你的服务器崩溃了。你可以设置你的脚本作为一个服务运行,可能有看门狗超时,你可以检查一些条件的定时器和使用sdnotify来防止看门狗重新启动你的服务,而它正在正常运行。

wbgh16ku

wbgh16ku2#

我修复了我的问题。我创建了一个systemd,当然仍然是每10秒运行一次相同的检查程序。现在我将观察这是否是好的

相关问题