更新缓存重发函数
This commit is contained in:
parent
211b879a75
commit
2c5d8933ba
28
server.py
28
server.py
@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
#coding:utf-8
|
#coding:utf-8
|
||||||
import socketserver
|
import socketserver
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -18,7 +18,8 @@ cache=defaultdict(list)
|
|||||||
|
|
||||||
|
|
||||||
def save_cache(dic):
|
def save_cache(dic):
|
||||||
'''缓存未发送成功的消息'''
|
'''缓存未发送成功的消息
|
||||||
|
仅在未发送成功时缓存'''
|
||||||
|
|
||||||
# f=open("./cache.txt",mode='w+')
|
# f=open("./cache.txt",mode='w+')
|
||||||
# f.write(str(dic))
|
# f.write(str(dic))
|
||||||
@ -26,6 +27,7 @@ def save_cache(dic):
|
|||||||
pickle.dump(dic,open("./cache.txt",'wb'))
|
pickle.dump(dic,open("./cache.txt",'wb'))
|
||||||
|
|
||||||
def load_cache():
|
def load_cache():
|
||||||
|
'''程序启动时加载缓存'''
|
||||||
try:
|
try:
|
||||||
# f=open("./cache.txt")
|
# f=open("./cache.txt")
|
||||||
# c = eval(f.read())
|
# c = eval(f.read())
|
||||||
@ -99,9 +101,17 @@ def tt_hh(addr,data):
|
|||||||
# 组帧再返回
|
# 组帧再返回
|
||||||
|
|
||||||
# 从缓存中匹配数据并重发
|
# 从缓存中匹配数据并重发
|
||||||
|
# 仅有新终端上线时才重发
|
||||||
if ccid in cache:
|
if ccid in cache:
|
||||||
for i in cache[ccid]:
|
msgs = cache[ccid]
|
||||||
addr.send(i)
|
for i in range(len(msgs)):
|
||||||
|
try:
|
||||||
|
addr.send(msgs[i])
|
||||||
|
# 发送成功则清除对应缓存数据
|
||||||
|
del cache[ccid][i] # not msgs[i]
|
||||||
|
except:
|
||||||
|
# 异常时退出循环
|
||||||
|
break
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@ -122,26 +132,30 @@ def tt_trans(addr,data):
|
|||||||
msg[-1]=crc
|
msg[-1]=crc
|
||||||
|
|
||||||
if not taddr:
|
if not taddr:
|
||||||
|
# 未报到匹配的在线终端
|
||||||
|
|
||||||
#更新缓存
|
#更新缓存
|
||||||
#{tccid1=[msg1,msg2,...],...}
|
#{tccid1=[msg1,msg2,...],...}
|
||||||
cache[tccid].append(msg)
|
cache[tccid].append(msg)
|
||||||
save_cache(cache)
|
save_cache(cache)
|
||||||
print("未找到在线终端,可能终端未在线或ccid错。")
|
print("终端未在线或ccid错。")
|
||||||
return 0
|
return 0
|
||||||
print("找到匹配终端:",tccid,"<--->",taddr)
|
print("匹配终端:",tccid,"<--->",taddr)
|
||||||
|
|
||||||
|
|
||||||
# 发送
|
# 发送
|
||||||
try:
|
try:
|
||||||
taddr.send(msg)
|
taddr.send(msg)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
# 发送失败
|
||||||
|
|
||||||
# 更新pairs,清空对应终端
|
# 更新pairs,清空对应终端
|
||||||
update_pairs(taddr,tccid,1)
|
update_pairs(taddr,tccid,1)
|
||||||
#更新缓存
|
#更新缓存
|
||||||
#{tccid1=[msg1,msg2,...],...}
|
#{tccid1=[msg1,msg2,...],...}
|
||||||
cache[tccid].append(msg)
|
cache[tccid].append(msg)
|
||||||
save_cache(cache)
|
save_cache(cache)
|
||||||
print("终端已掉线。",taddr)
|
print("发送失败,终端可能已掉线。",taddr)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def err_handle(flag,addr):
|
def err_handle(flag,addr):
|
||||||
|
Loading…
Reference in New Issue
Block a user