对报错进行了修复, 新加几个装饰器,以及防撤回
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# coding: utf-8
|
||||
# @Author: 小杨大帅哥
|
||||
import queue
|
||||
import time
|
||||
from threading import Thread
|
||||
|
||||
class messageList(list):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(messageList, self).__init__(*args, **kwargs)
|
||||
self.__isRunning = True
|
||||
self.__th = None
|
||||
self.__time_step = 2*60
|
||||
self.__msg_queen = queue.Queue()
|
||||
self.start()
|
||||
|
||||
def append(self, item) -> None:
|
||||
self.__isRunning = True
|
||||
if item['data'].get('msgid', None) is None:
|
||||
return
|
||||
super(messageList, self).append({str(item['data']['msgid']): item})
|
||||
self.__msg_queen.put({'data': item, 'submit_time': time.time()})
|
||||
|
||||
def stop(self):
|
||||
self.__isRunning = False
|
||||
|
||||
def find_msg(self, msgid):
|
||||
msgid = str(msgid)
|
||||
for msg_ele in self:
|
||||
if str(msgid) == str(list(msg_ele.keys())[0]):
|
||||
return msg_ele[msgid]
|
||||
return None
|
||||
|
||||
def start(self):
|
||||
def _start():
|
||||
while True:
|
||||
if self.__isRunning:
|
||||
try:
|
||||
new_data = self.__msg_queen.get()
|
||||
now = time.time()
|
||||
if now - new_data['submit_time'] >= self.__time_step:
|
||||
self.remove({str(new_data['data']['data']['msgid']): new_data['data']})
|
||||
continue
|
||||
time.sleep(self.__time_step - (now - new_data['submit_time']))
|
||||
self.remove({str(new_data['data']['data']['msgid']): new_data['data']})
|
||||
except (queue.Empty, KeyboardInterrupt):
|
||||
pass
|
||||
self.__th = Thread(target=_start, name='run', daemon=True)
|
||||
self.__th.start()
|
||||
|
||||
|
||||
msg_list = messageList()
|
||||
Reference in New Issue
Block a user