|
@@ -172,10 +172,43 @@ class globCL(GCLMixin):
|
172
|
172
|
self.rconn = connect_redis()
|
173
|
173
|
self.rman = RldMan()
|
174
|
174
|
self.cbs_once = []
|
|
175
|
+ self.cbs_asap = []
|
175
|
176
|
self.cbs_once_set = set()
|
176
|
177
|
self.cbs = {"fn1":fn1,"fn2x":nop}
|
177
|
178
|
self.timeout = 1
|
|
179
|
+ self.fast_timeout = .1
|
178
|
180
|
pass
|
|
181
|
+ async def persistent_fast_cb_loop(self,*a,**kw):
|
|
182
|
+ while 1:
|
|
183
|
+ if len(self.cbs_asap):
|
|
184
|
+ cbs_once = [*self.cbs_asap]
|
|
185
|
+ self.cbs_asap=[]
|
|
186
|
+ k=0
|
|
187
|
+ for v in cbs_once:
|
|
188
|
+ try:
|
|
189
|
+ call_info = callable_helper(v)
|
|
190
|
+ if (call_info["is_callable"]):
|
|
191
|
+ if call_info["is_coroutine"]:
|
|
192
|
+ pass
|
|
193
|
+ await v({k,self})
|
|
194
|
+ else:
|
|
195
|
+ v({k,self})
|
|
196
|
+
|
|
197
|
+ else:
|
|
198
|
+ pass
|
|
199
|
+ # p(k,v)
|
|
200
|
+
|
|
201
|
+ pass
|
|
202
|
+ except Exception as e:
|
|
203
|
+ p("persistent_fast_cb_loop Exception cbs_once:",e)
|
|
204
|
+ p(flush=True)
|
|
205
|
+ # raise
|
|
206
|
+ else:
|
|
207
|
+ pass
|
|
208
|
+ finally:
|
|
209
|
+ pass
|
|
210
|
+ k += 1
|
|
211
|
+ await asyncio.sleep(self.timeout)
|
179
|
212
|
async def persistent_loop(self,*a,**kw):
|
180
|
213
|
while 1:
|
181
|
214
|
# p("PL:",time.time(),flush=1)
|
|
@@ -244,6 +277,7 @@ class globCL(GCLMixin):
|
244
|
277
|
self.run_persistent_loop = nop
|
245
|
278
|
self.rman.persistent_loop_cb()
|
246
|
279
|
loop.create_task(self.persistent_loop())
|
|
280
|
+ loop.create_task(self.persistent_fast_cb_loop())
|
247
|
281
|
self.loop = loop
|
248
|
282
|
run_persistent_loop = _run_persistent_loop
|
249
|
283
|
|