浏览代码

auto commit

master
jfinn 2 年前
父节点
当前提交
4551ab8eb6
共有 1 个文件被更改,包括 130 次插入10 次删除
  1. 130
    10
      wsps/tasks_loop.py

+ 130
- 10
wsps/tasks_loop.py 查看文件

@@ -28,9 +28,31 @@ def connect_redis():
28 28
 # '''
29 29
 
30 30
 
31
+def callable_helper(fn):
32
+	ret = {
33
+	"is_callable":0,
34
+	"is_coroutine":0,
35
+	}
36
+	ret["is_callable"]= callable(fn)
37
+	ret["is_coroutine"]= inspect.iscoroutinefunction(fn)
38
+	# if (ca)
39
+
40
+	return ret
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
31 53
 class AclTaskMixin:
32 54
 	async def ws_conn0(self):
33
-		glob_cl.init_gcl(self)
55
+		glob_cl.run_persistent_loop(self)
34 56
 		print("++++++++++++++++++++++++++")
35 57
 		# oinfo(glob_cl)
36 58
 	async def ws_conn_once(self,*a,**kw):
@@ -43,20 +65,100 @@ class AclTaskMixin:
43 65
 class globCL():
44 66
 	def __init__(self,*a,**kw):
45 67
 		# for now we are not going to do any weird class stuff
46
-		self.r = connect_redis()
68
+		self.rconn = connect_redis()
69
+		self.rman = RldMan()
70
+		self.cbs_once = []
71
+		self.cbs_once_set = set()
72
+		self.cbs = {"fn1":fn1,"fn2x":nop}
47 73
 		pass
48 74
 	async def persistent_loop(self,*a,**kw):
49
-		pass
50
-	def run_persistent_loop(self,*a,**kw):
75
+		while 1:
76
+			# p("PL:",time.time(),flush=1)
77
+			# await asyncio.sleep(5)
78
+			# for k,v in cls.cbs.items():
79
+			for k,v in [*self.cbs.items()]:
80
+				try:
81
+					call_info = callable_helper(v)
82
+					if (call_info["is_callable"]):
83
+						if call_info["is_coroutine"]:
84
+							pass
85
+							await v({k,self})
86
+						else:
87
+							v({k,self})
88
+
89
+					else:
90
+						pass
91
+					# p(k,v)
92
+
93
+					pass
94
+				except Exception as e:
95
+					p("persistent_loop Exception",e)
96
+					p(flush=True)
97
+					# raise
98
+				else:
99
+					pass
100
+				finally:
101
+					pass
102
+			# cbs_once
103
+			cbs_once = [*self.cbs_once,*self.cbs_once_set]
104
+			self.cbs_once = []
105
+			self.cbs_once_set = set()
106
+			k=0
107
+			for v in cbs_once:
108
+				try:
109
+					call_info = callable_helper(v)
110
+					if (call_info["is_callable"]):
111
+						if call_info["is_coroutine"]:
112
+							pass
113
+							await v({k,self})
114
+						else:
115
+							v({k,self})
116
+
117
+					else:
118
+						pass
119
+					# p(k,v)
120
+
121
+					pass
122
+				except Exception as e:
123
+					p("persistent_loop Exception cbs_once:",e)
124
+					p(flush=True)
125
+					# raise
126
+				else:
127
+					pass
128
+				finally:
129
+					pass
130
+				k += 1
131
+
132
+
133
+
134
+
135
+			await asyncio.sleep(cls.timeout)
136
+	def _run_persistent_loop(self,*a,**kw):
137
+		p("_run_persistent_loop:")
138
+		loop = asyncio.get_event_loop()
139
+		self.run_persistent_loop = nop
140
+		loop.create_task(self.persistent_loop())
141
+		self.loop = loop
142
+	run_persistent_loop = _run_persistent_loop
143
+		
51 144
 		pass
52 145
 
53 146
 # RldManMixin
54 147
 class RldMan():
55 148
 	def __init__(self,*a,**kw):
149
+		self.files = {}
150
+
56 151
 		base_path = "/usr/games/repos/ign4/py_rld/djc/rdir1/"
57
-		self.files = [
58
-		base_path+"",
152
+
153
+		file_list = [
154
+		base_path+"r0.py",
155
+		base_path+"r1.py",
156
+		base_path+"r2.py",
157
+		base_path+"r3.py",
158
+		base_path+"r4.py",
159
+		base_path+"r5.py",
59 160
 		]
161
+		self.add_files(file_list)
60 162
 	def add_files(self,files):
61 163
 		for file in files:
62 164
 			if type(file)==str:
@@ -67,9 +169,27 @@ class RldMan():
67 169
 				p("add files???",file)
68 170
 	def add_file(self,file_name,fnx={}):
69 171
 		self.files[file_name] = {"ftxt":"",**fnx}
70
-
71
-
72
-
172
+	def rld_files(self):
173
+		# p()
174
+
175
+		ret = {
176
+		"errs":{},
177
+		"all":{},
178
+		"alle":{},
179
+		}
180
+		
181
+
182
+
183
+		# for k in self.files:
184
+		for k in [*self.files]:
185
+			self.rld_file(k,ret)
186
+		p("rld_files!")
187
+		p("",end="",flush=True)
188
+		return ret
189
+
190
+def fn1(*a,**kw):
191
+	# rld_files
192
+	glob_cl.rman.rld_files()
73 193
 glob_cl =  globCL()
74 194
 
75 195
 
@@ -81,7 +201,7 @@ glob_cl =  globCL()
81 201
 # print("..",end="\n",flush=True)
82 202
 
83 203
 def redis_info():
84
-	rconn = glob_cl.r
204
+	rconn = glob_cl.rconn
85 205
 	keys = rconn.keys()
86 206
 	for k in keys:
87 207
 		p(":",k)

正在加载...
取消
保存