本文整理汇总了Python中agentzero.core.SocketManager.send_safe方法的典型用法代码示例。如果您正苦于以下问题:Python SocketManager.send_safe方法的具体用法?Python SocketManager.send_safe怎么用?Python SocketManager.send_safe使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类agentzero.core.SocketManager
的用法示例。
在下文中一共展示了SocketManager.send_safe方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_socket_manager_send_safe_not_ready
# 需要导入模块: from agentzero.core import SocketManager [as 别名]
# 或者: from agentzero.core.SocketManager import send_safe [as 别名]
def test_socket_manager_send_safe_not_ready(wait_until_ready):
("SocketManager().send_safe() should return False when the socet is not ready")
# Background: wait_until_ready is mocked to return None
wait_until_ready.return_value = None
# Given a zmq mock
zmq = Mock()
# And a context
context = Mock()
# And a serializer
serializer = Mock(name='serializer')
# And a socket manager
manager = SocketManager(zmq, context, serialization_backend=serializer)
# When I call .send_safe()
sent = manager.send_safe('foobar', 'PAYLOAD')
# Then it should have failed
sent.should.be.false
# And it should not pack the value
serializer.pack.called.should.be.false
示例2: test_socket_manager_send_safe
# 需要导入模块: from agentzero.core import SocketManager [as 别名]
# 或者: from agentzero.core.SocketManager import send_safe [as 别名]
def test_socket_manager_send_safe(wait_until_ready):
("SocketManager().send_safe() should serialize "
"before sending, using the configured backend")
# Background: wait_until_ready is mocked to return the socket
wait_until_ready.side_effect = lambda name, *args: manager.sockets[name]
# Given a zmq mock
zmq = Mock()
# And a context
context = Mock()
# And a serializer
serializer = Mock(name='serializer')
# And a socket manager
manager = SocketManager(zmq, context, serialization_backend=serializer)
# And a socket
socket = manager.create('foobar', zmq.REP)
# When I call .send_safe()
sent = manager.send_safe('foobar', 'PAYLOAD')
# Then it should have sent successfully
sent.should.be.true
# And it should have packed the payload before sending
serializer.pack.assert_called_once_with('PAYLOAD')
packed = serializer.pack.return_value
socket.send.assert_called_once_with(packed)
示例3: test_socket_manager_send_safe_not_ready
# 需要导入模块: from agentzero.core import SocketManager [as 别名]
# 或者: from agentzero.core.SocketManager import send_safe [as 别名]
def test_socket_manager_send_safe_not_ready():
("SocketManager.send_safe should return False when the socket is not ready")
# Given a manager
manager = SocketManager(zmq, context)
# And a couple of sockets
manager.create('foo', zmq.REP)
# When I call .send_safe()
result = manager.send_safe('foo', {'some': 'value'})
# Then it should be false
result.should.be.false
示例4: Pipeline
# 需要导入模块: from agentzero.core import SocketManager [as 别名]
# 或者: from agentzero.core.SocketManager import send_safe [as 别名]
#.........这里部分代码省略.........
def bind_action(self, name, method=None):
action = getattr(self.actions, name, None)
if not action:
raise KeyError('undefined action: {0}'.format(name))
method = method or getattr(self, 'on_{0}'.format(name), None)
if not method:
raise TypeError('{0} does not have method {1}(self, topic, data)'.format(self.__class__, name))
action(lambda _, event: self.spawn(method, event))
def should_run(self):
return self._allowed_to_run
def listen(self, subscriber_bind_address='tcp://127.0.0.1:6000', pull_bind_address='tcp://127.0.0.1:7000'):
self.sockets.bind('step-events', subscriber_bind_address, zmq.POLLIN)
self.sockets.bind('jobs-in', pull_bind_address, zmq.POLLIN)
self.logger.info('listening for events on %s', subscriber_bind_address)
self.logger.info('listening for instructions on %s', pull_bind_address)
def route_event(self, event):
if not event:
return
ROUTES = {
re.compile(r'available'): self.actions.available,
re.compile(r'failed'): self.actions.failed,
re.compile(r'success'): self.actions.success,
re.compile(r'started'): self.actions.started,
re.compile(r'metric'): self.actions.metric,
re.compile(r'logs'): self.actions.logs,
re.compile(r'error'): self.actions.error,
}
matched = False
for regex, action in ROUTES.items():
if regex.search(event.topic):
action.shout(event)
matched = True
if not matched:
print 'unmatched event', event.topic, event.data
def drain_jobs_in(self):
while self.should_run():
data = self.sockets.recv_safe('jobs-in')
if not data:
gevent.sleep(0)
continue
job = Job.new(data)
self.backend.enqueue_job(job)
gevent.sleep(0)
def drain_jobs_out(self):
iteration = -1
while self.should_run():
iteration += 1
index = iteration % len(self.steps)
job_type = self.steps[index]
worker = self.backend.get_next_available_worker_for_type(job_type)
if not worker:
gevent.sleep(0)
continue
job = self.backend.dequeue_job_of_type(job_type)
if not job:
gevent.sleep(0)
continue
self.sockets.send_safe(worker.job_type, job.to_dict())
gevent.sleep(0)
def spawn(self, *args, **kw):
self.greenlets.append(
self.pool.spawn(*args, **kw)
)
def idle(self):
gevent.sleep(0)
def loop(self):
self.listen()
self.spawn(self.drain_events)
self.spawn(self.drain_jobs_in)
self.spawn(self.drain_jobs_out)
while self.should_run():
gevent.sleep(5)
def drain_events(self):
# drain events
while self.should_run():
event = self.sockets.recv_event_safe('step-events')
if event:
self.route_event(event)
gevent.sleep(0)
else:
self.idle()