问题描述
我正在尝试执行一个节点管理器服务器脚本,我允许多个客户端连接,它通过消息代理以 JSON 格式发送 redis
因为我不需要任何花哨的实现,例如 kafka 或气流,但是如何我如何使用 redis 执行我的发送 - 接收数据?
server.py
import socket
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 8192 # The port used by the server
BUFFER_SIZE = 1
def server_socket():
data = []
with socket.socket(socket.AF_INET,socket.soCK_STREAM) as s:
s.setsockopt(socket.soL_SOCKET,socket.so_REUSEADDR,1)
s.bind((HOST,PORT))
s.listen()
while 1: # Accept connections from multiple clients
print('Listening for client...')
conn,addr = s.accept()
print('Connection address:',addr)
while 1: # Accept multiple messages from each client
buffer = conn.recv(BUFFER_SIZE)
buffer = buffer.decode()
if buffer == ";":
conn.close()
print("Received all the data")
for x in data:
print(x)
break
elif buffer:
print("received data: ",buffer)
data.append(buffer)
else:
break
server_socket()
客户端.py
import socket
import json
HOST = '127.0.0.1' # The server's hostname or IP address
PORT = 8192 # The port used by the server
def json_message(direction):
local_ip = socket.gethostbyname(socket.gethostname())
data = {
'sender': local_ip,'instruction': direction
}
json_data = json.dumps(data,sort_keys=False,indent=2)
print("data %s" % json_data)
send_message(json_data + ";")
return json_data
def send_message(data):
with socket.socket(socket.AF_INET,socket.soCK_STREAM) as s:
s.connect((HOST,PORT))
s.sendall(data.encode())
data = s.recv(1024)
print('Received',repr(data))
json_message("SOME_DIRECTION")
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)