Python瓶子和gevent服务器是否异步运行?

Python瓶子和gevent服务器是否异步运行?,python,asynchronous,websocket,bottle,gevent,Python,Asynchronous,Websocket,Bottle,Gevent,我最近一直在开发一个带有歌曲请求功能的网络控制扬声器,我似乎无法同时将两个浏览器连接到网络套接字。服务器仍将为浏览器提供HTML,但不提供Web套接字提供的数据。我知道我可能需要使用gevent的内置Greenlet,但我不知道这是否适用于这里,或者我是否需要重新思考我对无限循环的想法。有人能帮忙吗 gevent测试的内容。py: from bottle import request, Bottle, abort, static_file app = Bottle() open("playli

我最近一直在开发一个带有歌曲请求功能的网络控制扬声器,我似乎无法同时将两个浏览器连接到网络套接字。服务器仍将为浏览器提供HTML,但不提供Web套接字提供的数据。我知道我可能需要使用gevent的内置Greenlet,但我不知道这是否适用于这里,或者我是否需要重新思考我对无限循环的想法。有人能帮忙吗

gevent测试的内容。py:

from bottle import request, Bottle, abort, static_file
app = Bottle()

open("playlist2.txt").close()

@app.route('/websocket')
def handle_websocket():
    wsock = request.environ.get('wsgi.websocket')
    if not wsock:
        abort(400, 'Expected WebSocket request.')

    while True:
        try:
            playlist = open("playlist2.txt", "r").readlines()
            playlistnew = open("playlist.txt", "r").readlines()
        except FileNotFoundError:
            pass
        except PermissionError:
            pass
        if playlist != playlistnew:
            try:
                playlist = open("playlist2.txt", "w")
                playlist.writelines(playlistnew)
                playlist.close()
            except FileNotFoundError:
                pass
            try:
                message = open("playlist2.txt", "r").read()
                print(message)
                wsock.send(message)
            except WebSocketError:
                break

@app.get('/home')
def homepage():
    return static_file("index.html", root=".")

from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketError
from geventwebsocket.handler import WebSocketHandler
server = WSGIServer(("127.0.0.1", 8080), app,
                    handler_class=WebSocketHandler)
server.serve_forever()
<!DOCTYPE html>
<html>
<head>
  <h1>Now playing:</h1>
  <p id="now-playing"></p>
  <h1>Up Next:</h1>
  <table>
        <thead>
            <tr>
                <th>No.</th>
                <th>Song Title</th>
            </tr>
        </thead>
        <tbody id="playlist">

        </tbody>
  </table>
  <script type="text/javascript">
    var ws = new WebSocket("ws://127.0.0.1:8080/websocket");
    ws.onopen = function() {};
    ws.onmessage = function (evt) {
        var file = (evt.data).split("\n");
        console.log(file);
        var table = document.getElementById("playlist");
        table.innerHTML = '';
        document.getElementById("now-playing").innerHTML = file[0]
        for(var i=1, len=file.length; i < len; i++){
            var number = (i);
            var name = (file[i]);
            console.log(file[i])
            console.log(i)
            var newrow = table.insertRow(-1);
            var numberCell = newrow.insertCell(0);
            numberCell.innerHTML = number
            var nameCell = newrow.insertCell(1);
            nameCell.innerHTML = name
        };
    };
  </script>
</head>
</html>
index.html的内容:

from bottle import request, Bottle, abort, static_file
app = Bottle()

open("playlist2.txt").close()

@app.route('/websocket')
def handle_websocket():
    wsock = request.environ.get('wsgi.websocket')
    if not wsock:
        abort(400, 'Expected WebSocket request.')

    while True:
        try:
            playlist = open("playlist2.txt", "r").readlines()
            playlistnew = open("playlist.txt", "r").readlines()
        except FileNotFoundError:
            pass
        except PermissionError:
            pass
        if playlist != playlistnew:
            try:
                playlist = open("playlist2.txt", "w")
                playlist.writelines(playlistnew)
                playlist.close()
            except FileNotFoundError:
                pass
            try:
                message = open("playlist2.txt", "r").read()
                print(message)
                wsock.send(message)
            except WebSocketError:
                break

@app.get('/home')
def homepage():
    return static_file("index.html", root=".")

from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketError
from geventwebsocket.handler import WebSocketHandler
server = WSGIServer(("127.0.0.1", 8080), app,
                    handler_class=WebSocketHandler)
server.serve_forever()
<!DOCTYPE html>
<html>
<head>
  <h1>Now playing:</h1>
  <p id="now-playing"></p>
  <h1>Up Next:</h1>
  <table>
        <thead>
            <tr>
                <th>No.</th>
                <th>Song Title</th>
            </tr>
        </thead>
        <tbody id="playlist">

        </tbody>
  </table>
  <script type="text/javascript">
    var ws = new WebSocket("ws://127.0.0.1:8080/websocket");
    ws.onopen = function() {};
    ws.onmessage = function (evt) {
        var file = (evt.data).split("\n");
        console.log(file);
        var table = document.getElementById("playlist");
        table.innerHTML = '';
        document.getElementById("now-playing").innerHTML = file[0]
        for(var i=1, len=file.length; i < len; i++){
            var number = (i);
            var name = (file[i]);
            console.log(file[i])
            console.log(i)
            var newrow = table.insertRow(-1);
            var numberCell = newrow.insertCell(0);
            numberCell.innerHTML = number
            var nameCell = newrow.insertCell(1);
            nameCell.innerHTML = name
        };
    };
  </script>
</head>
</html>

现在播放:

下一步: 不 歌曲名称 var ws=newwebsocket(“ws://127.0.0.1:8080/WebSocket”); ws.onopen=function(){}; ws.onmessage=函数(evt){ var file=(evt.data).split(“\n”); console.log(文件); var table=document.getElementById(“播放列表”); table.innerHTML=''; document.getElementById(“正在播放”).innerHTML=文件[0] for(var i=1,len=file.length;i
playlist.txt和playlist2.txt可以包含您想要的任何内容,但web套接字仅在您编辑和保存playlist.txt时提供数据。然后,它编辑playlay2.txt以匹配,然后获取新数据并发送