小编nod*_*ata的帖子

如何与我的Web Socket服务器通信我的Rest Api服务器

这是我的问题,部分解决,但不是我认为最好的方式.我有一个REST API服务器,它有一个只执行批处理的POST方法.该方法立即返回200(没有任何正文),批处理继续在服务器中执行其任务.这个批处理过程有一个日志文件,我通常在网上看到tail -f mylogfile.log.我现在想要的是使用websocket服务器将尾部进程的输出发送到网页.websocket服务器的代码如下所示:

import os
import asyncio
import websockets
import subprocess

from frontserv.start_server import WEBSOCKET_INTERCHANGE_FILE


async def main(websocket, path):
    print("-> STARTING")
    exists = os.path.isfile(WEBSOCKET_INTERCHANGE_FILE)
    if not exists:
        f = open(WEBSOCKET_INTERCHANGE_FILE, "w+")
        f.close()

    exe = ["tail", "-f", WEBSOCKET_INTERCHANGE_FILE]
    message = ""
    p = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=None)
    while True:
        retcode = p.poll()
        print(message)
        message = message + p.stdout.readline().decode("utf-8") + "<br>"
        await websocket.send(message)
        await asyncio.sleep(0.1)


start_server = websockets.serve(main, '127.0.0.1', 5678)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
Run Code Online (Sandbox Code Playgroud)

我可以访问批处理代码,我认为有更好的方法来解决这个问题.如果不是记录到文件,我可以向websocket服务器发送消息以向浏览器发送消息,我认为这将是一个更好的实现.

最好的祝福!

python rest websocket

10
推荐指数
1
解决办法
187
查看次数

标签 统计

python ×1

rest ×1

websocket ×1