def make_getter(getter):
"""Create an command from a method signature."""
# pylint: disable=missing-docstring
def get(self, timeout=10):
name = getter.__name__
# pylint: disable=protected-access
signal = '{uuid}{sep}{event}'.format(
uuid=self._uuid,
sep=SEPARATOR,
event=name
)
event = LightQueue(1)
if flask.has_request_context():
emit(signal, callback=lambda x: event.put(unpack(x)))
else:
sio = flask.current_app.extensions['socketio']
sio.emit(signal, callback=lambda x: event.put(unpack(x)))
data = event.get(timeout=timeout)
return getter(self, data)
# don't want to copy the signature in this case
get.__doc__ = getter.__doc__
return get
评论列表
文章目录