RE: Python a problém s příjmem websocket

Holec Jiří Jiri.Holec na o2its.cz
Pondělí Listopad 14 13:55:20 CET 2022


Nevím jestli to pomůže, ale zrovna teď na root.cz
https://www.root.cz/clanky/komunikace-webove-aplikace-se-serverem-pomoci-websocket/

-----Original Message-----
From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of cizek.milan na seznam.cz
Sent: Sunday, November 13, 2022 2:30 AM
To: hw-list na hw.cz
Subject: Python a problém s příjmem websocket

Ahoj,

nevím, jestli někdo bude vědět, ale už ses tím trápím dost dlouho a fakt nevím.
Naimplementoval jsem si v pythonu wesocket server (import websockets) podle příkladu.
Tento server běží v extra vlákně. Když přijme data od klienta, pak tato data zkontroluje a vloží do Queue/SimpleQueue přes put().
V hlavním vlákně (main) pak mám nekonečnou smyčku, která hlídá velikost fronty a případně vyčítá data přes get() a tato zpracovává.

Vedle toho jsem si napsal druhý skript websocket klienta, který mi do serveru posílá zkušebně několik příkazů po sobě.
Ve skriptu serveru jsem si zapnul debug logování, tak vidím i co dělá ten websocket server, resp. jestli a co přijímá.

Mám potvrzené, že do websocket serveru ta data dorazí (v logu vidím read_frame a obsah), to zaloguje z daného vlákna.
https://snipboard.io/93Qx1i.jpg

Ale tím to skončí, data už se mi nevloží do mé fronty a vlastně si na ně v tom vlákně nijak nešahnu / tam už o nich nevím / nenaplní se mi do data. (?)

Vůbec mě nenapadá, v čem může být problém. Nějaký nápad?

cmds_queue = queue.Queue()  # Queue/SimpleQueue

def bgWorker_WS():
    # create handler for each connection
    async def handler(websocket, path):
        data = await websocket.recv()

        # ověření, jestli jsme obdrželi validní příkaz se všemi hodnotami
        if isCommandValid(data):
            LOGGER.debug("received data match the defined protocol and will be processed")

            LOGGER.debug("received command added to queue")
            cmds_queue.put(data);  # default: block=True, timeout=None

            await websocket.send("DEMO REPLY")
        else:
            LOGGER.error("received data does not match the defined protocol and will not be processed!")

    loop = asyncio.new_event_loop()  # vytvoříme novou smyčku v tomto vlákně
    asyncio.set_event_loop(loop)

    start_server = websockets.serve(handler, "", 8001)
    loop.run_until_complete(start_server)
    loop.run_forever()

def isCommandValid(data):
    return True

if __name__ == '__main__':
    bgsk = threading.Thread(target=bgWorker_WS, daemon=True).start()

    while True:
        pass

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


Odesílatel zprávy si vyhrazuje právo, pod sankcí neplatnosti, uzavírat smlouvy pouze v písemné formě, přičemž za písemnou formu je považována pouze forma listiny opatřená podpisy oprávněných zástupců smluvních stran, případně její elektronicky konvertovaná podoba. Žádná jiná forma ujednání nemůže být považována za platně a účinně uzavřenou smlouvu a obsah tohoto emailu není možné považovat za návrh na uzavření jakéhokoliv smluvního vztahu. Odesílatel zprávy dále vylučuje přijetí jakékoliv nabídky pouhým chováním jakékoliv smluvní strany, zejména poskytnutím nebo přijetím plnění.

Jakákoliv skutečnost, která by mohla vyplynout ze sdělení obsaženého v tomto e-mailu, nemůže být brána za závazný příslib plnění, který by zakládal povinnost odesílatele zprávy uzavřít smlouvu, nemůže být brána za vzdání se práva či prominutí dluhu ze strany odesílatele zprávy, a to až do doby, dokud nebude stvrzena písemně v listinné podobě a opatřena podpisem oprávněného zástupce odesílatele zprávy.

Odpověď adresáta na nabídku odesílatele zprávy s jakýmkoliv dodatkem nebo odchylkou není přijetím nabídky na uzavření smlouvy, ani když podstatně nemění podmínky nabídky. Odesílatel zprávy vylučuje modifikovanou akceptaci nabídky.
___________________________________________________________________________________________

The message sender reserves the right, under penalty of nullity, to conclude the contract in writing; the written form is considered the only form of instrument to be signed by authorized representatives of the parties or its converted form electronically. No other form of arrangement cannot be considered as validly and effectively contracted and content of the email cannot be considered as a proposal for the conclusion of any contract. The message sender also precludes the adoption of any offer simply the behavior of any contracting party in particular the granting or taking of performance.

Any fact that could arise from the communication contained in this e -mail cannot be taken as binding promise of transaction, which required the sender to contract or cannot be taken as a waiver or debt forgiveness by the sender of the message until it will be confirmed in writing in paper form and signed by an authorized representative of the message sender.

Reply of the message sender with any amendment or variation is not accepting the offer to conclude a contract, even if not substantially alter the terms of the offer. The message sender excludes modified acceptance of the offer.



Další informace o konferenci Hw-list