123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- import asyncio
- import time
-
- import redis
-
- import os
- import copy
- import json
-
- import traceback
- import inspect
-
-
- '''
- umod
- # '''
-
- p=print
-
- async def anop(*a,**kw):pass
- def nop(*a,**kw):pass
-
- def connect_redis():
- return redis.Redis(host='localhost', port=6379, db=0,charset="utf-8", decode_responses=True, encoding_errors="backslashreplace")
-
-
- '''
- # '''
-
-
- def callable_helper(fn):
- ret = {
- "is_callable":0,
- "is_coroutine":0,
- }
- ret["is_callable"]= callable(fn)
- ret["is_coroutine"]= inspect.iscoroutinefunction(fn)
- # if (ca)
-
- return ret
-
-
-
-
-
-
-
-
-
-
-
-
- class AclTaskMixin:
- async def ws_conn0(self):
- glob_cl.run_persistent_loop(self)
- print("++++++++++++++++++++++++++")
- # oinfo(glob_cl)
- async def ws_conn_once(self,*a,**kw):
- print("\t\tws_conn_once:","AclTaskMixin")
-
-
-
-
- # GCLMixin
- class globCL():
- def __init__(self,*a,**kw):
- # for now we are not going to do any weird class stuff
- self.rconn = connect_redis()
- self.rman = RldMan()
- self.cbs_once = []
- self.cbs_once_set = set()
- self.cbs = {"fn1":fn1,"fn2x":nop}
- pass
- async def persistent_loop(self,*a,**kw):
- while 1:
- # p("PL:",time.time(),flush=1)
- # await asyncio.sleep(5)
- # for k,v in cls.cbs.items():
- for k,v in [*self.cbs.items()]:
- try:
- call_info = callable_helper(v)
- if (call_info["is_callable"]):
- if call_info["is_coroutine"]:
- pass
- await v({k,self})
- else:
- v({k,self})
-
- else:
- pass
- # p(k,v)
-
- pass
- except Exception as e:
- p("persistent_loop Exception",e)
- p(flush=True)
- # raise
- else:
- pass
- finally:
- pass
- # cbs_once
- cbs_once = [*self.cbs_once,*self.cbs_once_set]
- self.cbs_once = []
- self.cbs_once_set = set()
- k=0
- for v in cbs_once:
- try:
- call_info = callable_helper(v)
- if (call_info["is_callable"]):
- if call_info["is_coroutine"]:
- pass
- await v({k,self})
- else:
- v({k,self})
-
- else:
- pass
- # p(k,v)
-
- pass
- except Exception as e:
- p("persistent_loop Exception cbs_once:",e)
- p(flush=True)
- # raise
- else:
- pass
- finally:
- pass
- k += 1
-
-
-
-
- await asyncio.sleep(cls.timeout)
- def _run_persistent_loop(self,*a,**kw):
- p("_run_persistent_loop:")
- loop = asyncio.get_event_loop()
- self.run_persistent_loop = nop
- loop.create_task(self.persistent_loop())
- self.loop = loop
- run_persistent_loop = _run_persistent_loop
-
- pass
-
- # RldManMixin
- class RldMan():
- def __init__(self,*a,**kw):
- self.files = {}
-
- base_path = "/usr/games/repos/ign4/py_rld/djc/rdir1/"
-
- file_list = [
- base_path+"r0.py",
- base_path+"r1.py",
- base_path+"r2.py",
- base_path+"r3.py",
- base_path+"r4.py",
- base_path+"r5.py",
- ]
- self.add_files(file_list)
- def add_files(self,files):
- for file in files:
- if type(file)==str:
- self.add_file(file)
- elif type(file)==list:
- self.add_file(*file)
- else:
- p("add files???",file)
- def add_file(self,file_name,fnx={}):
- self.files[file_name] = {"ftxt":"",**fnx}
- def rld_files(self):
- # p()
-
- ret = {
- "errs":{},
- "all":{},
- "alle":{},
- }
-
-
-
- # for k in self.files:
- for k in [*self.files]:
- self.rld_file(k,ret)
- p("rld_files!")
- p("",end="",flush=True)
- return ret
-
- def fn1(*a,**kw):
- # rld_files
- glob_cl.rman.rld_files()
- glob_cl = globCL()
-
-
-
-
-
-
-
- # print("..",end="\n",flush=True)
-
- def redis_info():
- rconn = glob_cl.rconn
- keys = rconn.keys()
- for k in keys:
- p(":",k)
-
- p("len(keys)",len(keys))
- print("",end="",flush=True)
- # rconn.flushall()
- redis_info()
- r"""
-
- def atexit_fn():
- pass
- # rconn.flushall()
- print("ATEXIT FN")
- rinfo_len()
- keys = rconn.keys()
- print(keys)
- print(len(keys))
- print("t 000")
- # time.sleep(10)
- print("t 010")
- # time.sleep(20)
- print("t 020")
- print("ATEXIT FN...")
- rconn.flushall()
- atexit.register(atexit_fn)
-
-
-
- # """
|