MCPcopy Index your code
hub / github.com/pywebio/PyWebIO / _activate_callback_env

Method _activate_callback_env

pywebio/session/threadbased.py:224–243  ·  view source on GitHub ↗

激活回调功能 ThreadBasedSession 的回调实现原理是:创建一个单独的线程用于接收回调事件,进而调用相关的回调函数。 当用户Task中并没有使用到回调功能时,不必开启此线程,可以节省资源

(self)

Source from the content-addressed store, hash-verified

222 self._cleanup(nonblock=nonblock)
223
224 def _activate_callback_env(self):
225 """激活回调功能
226
227 ThreadBasedSession 的回调实现原理是:创建一个单独的线程用于接收回调事件,进而调用相关的回调函数。
228 当用户Task中并没有使用到回调功能时,不必开启此线程,可以节省资源
229 """
230
231 if self.callback_mq is not None: # 回调功能已经激活
232 return
233
234 self.callback_mq = queue.Queue(maxsize=self.callback_mq_maxsize)
235 self.callback_thread = threading.Thread(target=self._dispatch_callback_event,
236 daemon=True, name='callback-' + random_str(10))
237 # self.register_thread(self.callback_thread)
238 self.thread2session[id(self.callback_thread)] = self # 用于在线程内获取会话
239 event_mq = queue.Queue(maxsize=self.event_mq_maxsize) # 回调线程内的用户事件队列
240 self.task_mqs[self._get_task_id(self.callback_thread)] = event_mq
241
242 self.callback_thread.start()
243 logger.debug('Callback thread start')
244
245 def _dispatch_callback_event(self):
246 while not self.closed():

Callers 1

register_callbackMethod · 0.95

Calls 3

_get_task_idMethod · 0.95
random_strFunction · 0.85
idFunction · 0.85

Tested by

no test coverage detected