Jak používat ZeroMQ ve Streamlit

Použití ZMQ ve streamlit není triviální, protože celý soubor bude spuštěn mnohokrát. Takže se musíte postarat, aby context, socket atd byly vytvořeny pouze jednou.

Trik je použít @st.cache_resource pro cache contextu a socketu. Zde je příklad:

streamlit_zmq_example.py
#!/usr/bin/env python3
import zmq
import json
import streamlit as st

# Set up ZMQ PUB socket
@st.cache_resource
def init_zmq():
    print("Initializing ZMQ")
    context = zmq.Context()
    socket = context.socket(zmq.PUB)
    socket.bind("tcp://*:15629")
    return context, socket
# Create context and socket, or use cached one
context,socket = init_zmq()

st.title('My streamlit ZMQ test')

# Create button
my_button = st.toggle('My button')

# Save button
if st.button('Save'):
    st.write('Button clicked!')
    message = json.dumps({
        'my_button': all_motors_on,
    })
    print(f"Sending message: {message}")
    socket.send_string(message)

Podívejte se na podobné články podle kategorie: ZeroMQ Python