本文整理汇总了Python中zmq.Poller类的典型用法代码示例。如果您正苦于以下问题:Python Poller类的具体用法?Python Poller怎么用?Python Poller使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Poller类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: HomeBase
class HomeBase(Thread):
def __init__(self):
super(HomeBase, self).__init__(name="HomeBase")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.bind("tcp://*:7001")
self._shutdown = False
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
def cleanup(self):
self.pull.close()
self.context.term()
def run(self):
while True:
socks = dict(self.poller.poll(timeout=1))
if socks.get(self.pull) == POLLIN:
msg = self.pull.recv()
msg += ", WORK RECEIVED "
print msg
if self._shutdown:
break
self.cleanup()
开发者ID:dcolish,项目名称:Presentations,代码行数:25,代码来源:pipeline_sink.py
示例2: run
def run(self, *args):
"""Run the listener and answer to requests.
"""
del args
arec = AddressReceiver(max_age=self._max_age)
arec.start()
port = PORT
try:
self.listener = context.socket(REP)
self.listener.bind("tcp://*:" + str(port))
poller = Poller()
poller.register(self.listener, POLLIN)
while self.loop:
socks = dict(poller.poll(1000))
if socks:
if socks.get(self.listener) == POLLIN:
msg = self.listener.recv()
else:
continue
logger.debug("Replying to request: " + str(msg))
msg = Message.decode(msg)
self.listener.send_unicode(str(get_active_address(
msg.data["service"], arec)))
except KeyboardInterrupt:
# Needed to stop the nameserver.
pass
finally:
arec.stop()
self.listener.close()
开发者ID:ch-k,项目名称:posttroll,代码行数:31,代码来源:ns.py
示例3: _send_request
def _send_request(req_id, action, key, value=None):
""" Generate a request ID, push the request to the node and wait for the
result, filtering by the ID on the subscription.
This should be a request/response call to the node, but since many must be
possible at the same time, a PUSH/PULL AND PUB/SUB with an unique ID for
each request is used instead.
:return: the node response
:rtype: []
"""
# Create and connect the sockets.
context = current_app.config["context"]
subscriber = context.socket(SUB)
subscriber.setsockopt_string(SUBSCRIBE, req_id)
subscriber.connect(SUB_ENDPOINT)
request = context.socket(PUSH)
request.setsockopt(SNDTIMEO, _TIMEOUT)
request.connect(PUSH_ENDPOINT)
# Push the request.
request.send_json([req_id, action, key, value])
# Wait for the response from the publisher.
poller = Poller()
poller.register(subscriber, POLLIN)
sockets = dict(poller.poll(_TIMEOUT))
if subscriber not in sockets: # no response, time out
raise InternalServerError()
# Return the response, without the unique request ID
return subscriber.recv_multipart()[1:]
开发者ID:merry-bits,项目名称:DCache,代码行数:29,代码来源:api.py
示例4: HomeBase
class HomeBase(Thread):
def __init__(self):
super(HomeBase, self).__init__(name="HomeBase")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.bind("tcp://*:7001")
self._shutdown = False
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
for th in t_enum():
if th.name == "MainThread":
self.mainthread = th
def cleanup(self):
print "Home exiting..."
self.pull.close()
self.context.term()
def run(self):
while True:
if not self.mainthread.is_alive():
self._shutdown = True
break
socks = dict(self.poller.poll(timeout=1))
if socks.get(self.pull) == POLLIN:
msg = self.pull.recv(flags=NOBLOCK)
msg += ", WORK RECEIVED "
print msg
if self._shutdown:
break
self.cleanup()
开发者ID:dcolish,项目名称:Presentations,代码行数:32,代码来源:pipeline_producer.py
示例5: get_pub_address
def get_pub_address(name, timeout=10, nameserver="localhost"):
"""Get the address of the publisher for a given publisher *name* from the
nameserver on *nameserver* (localhost by default).
"""
# Socket to talk to server
socket = context.socket(REQ)
try:
socket.setsockopt(LINGER, timeout * 1000)
socket.connect("tcp://" + nameserver + ":" + str(PORT))
poller = Poller()
poller.register(socket, POLLIN)
message = Message("/oper/ns", "request", {"service": name})
socket.send(str(message))
# Get the reply.
sock = poller.poll(timeout=timeout * 1000)
if sock:
if sock[0][0] == socket:
message = Message.decode(socket.recv(NOBLOCK))
return message.data
else:
raise TimeoutError("Didn't get an address after %d seconds."
% timeout)
finally:
socket.close()
开发者ID:ch-k,项目名称:posttroll,代码行数:28,代码来源:ns.py
示例6: Leatherneck
class Leatherneck(Thread):
def __init__(self):
super(Leatherneck, self).__init__(name="Leatherneck")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.connect("tcp://localhost:7000")
self.push = self.context.socket(PUSH)
self.push.connect("tcp://localhost:7001")
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
self._shutdown = False
for th in t_enum():
if th.name == "MainThread":
self.mainthread = th
def cleanup(self):
print "Workers exiting..."
self.push.close()
self.pull.close()
self.context.term()
def run(self):
while True:
if not self.mainthread.is_alive():
self._shutdown = True
break
socks = dict(self.poller.poll(timeout=1))
if socks.get(self.pull) == POLLIN:
msg = self.pull.recv(flags=NOBLOCK)
msg += " WORK COMPLETE, " + str(time())
self.push.send(msg, flags=NOBLOCK)
if self._shutdown:
break
self.cleanup()
开发者ID:dcolish,项目名称:Presentations,代码行数:35,代码来源:pipeline_producer.py
示例7: Listener
class Listener(Thread):
def __init__(self):
super(Listener, self).__init__(name="Listener")
self._shutdown = False
self.context = Context()
self.sub = self.context.socket(SUB)
self.sub.bind('tcp://*:7000')
self.sub.setsockopt(SUBSCRIBE, "")
self.poller = Poller()
self.poller.register(self.sub, POLLIN)
def cleanup(self):
self.sub.close()
self.context.term()
def run(self):
while True:
socks = dict(self.poller.poll(timeout=1))
if socks.get(self.sub) == POLLIN:
msg = self.sub.recv(flags=NOBLOCK)
print msg
if self._shutdown:
break
self.cleanup()
开发者ID:dcolish,项目名称:Presentations,代码行数:26,代码来源:listener.py
示例8: Stethoscope
class Stethoscope(Thread):
def __init__(self, context, *args, **kw):
self.context = context
self.recv = self.context.socket(PAIR)
self.recv.connect("inproc://#1")
self.pub = self.context.socket(PUB)
self.pub.connect('tcp://localhost:7003')
self.pub.setsockopt(HWM, 1000)
self.poller = Poller()
self.poller.register(self.recv, POLLIN)
super(Stethoscope, self).__init__(*args, **kw)
def cleanup(self):
self.recv.close()
self.pub.close()
def run(self):
try:
while not shutdown.is_set():
socks = dict(self.poller.poll())
if socks.get(self.recv) == POLLIN:
msg = self.recv.recv()
self.pub.send(msg, flags=NOBLOCK)
if msg == "DIE":
raise KillThread
except KillThread:
print "%s exiting..." % self.name
finally:
self.cleanup()
开发者ID:dcolish,项目名称:Presentations,代码行数:32,代码来源:spike.py
示例9: Leatherneck
class Leatherneck(Thread):
def __init__(self):
super(Leatherneck, self).__init__(name="Leatherneck")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.connect("tcp://localhost:7000")
self.push = self.context.socket(PUSH)
self.push.connect("tcp://localhost:7001")
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
self._shutdown = False
def cleanup(self):
self.push.close()
self.pull.close()
self.context.term()
def run(self):
while True:
socks = dict(self.poller.poll(timeout=1))
if socks.get(self.pull) == POLLIN:
msg = self.pull.recv()
msg += " WORK COMPLETE, " + str(time())
self.push.send(msg)
if self._shutdown:
break
self.cleanup()
开发者ID:dcolish,项目名称:Presentations,代码行数:28,代码来源:pipeline_worker.py
示例10: MirrorWatcher
class MirrorWatcher(Thread):
"""Watches a other server.
"""
def __init__(self, holder, host, pubport, reqport, sched):
Thread.__init__(self)
self._holder = holder
self._pubaddress = "tcp://" + host + ":" + str(pubport)
self._reqaddress = "tcp://" + host + ":" + str(reqport)
self._req = SimpleRequester(host, reqport)
self._subsocket = context.socket(SUB)
self._subsocket.connect(self._pubaddress)
self._subsocket.setsockopt(SUBSCRIBE, "pytroll")
self._poller = Poller()
self._poller.register(self._subsocket, POLLIN)
self._lock = Lock()
self._loop = True
self._sched = sched
def run(self):
last_hb = datetime.now()
minutes = 2
while self._loop:
if datetime.now() - last_hb > timedelta(minutes=minutes):
logger.error("No heartbeat from " + str(self._pubaddress))
last_hb = datetime.now()
minutes = 1440
socks = dict(self._poller.poll(2000))
if (socks and
self._subsocket in socks and
socks[self._subsocket] == POLLIN):
message = Message.decode(self._subsocket.recv())
else:
continue
if message.type == "have":
sat = message.data["satellite"]
key = strp_isoformat(message.data["timecode"])
elevation = message.data["elevation"]
quality = message.data.get("quality", 100)
data = _MirrorGetter(self._req, sat, key)
self._holder.add(sat, key, elevation, quality, data)
if message.type == "heartbeat":
logger.debug("Got heartbeat from " + str(self._pubaddress)
+ ": " + str(message))
self._sched.mirror_next_pass = message.data["next_pass"]
last_hb = datetime.now()
minutes = 2
def stop(self):
"""Stop the watcher
"""
self._loop = False
self._req.stop()
self._subsocket.setsockopt(LINGER, 0)
self._subsocket.close()
开发者ID:pytroll,项目名称:trollcast,代码行数:58,代码来源:server.py
示例11: ZMQPoller
class ZMQPoller(object):
"""A poller that can be used in the tornado IOLoop.
This simply wraps a regular zmq.Poller, scaling the timeout
by 1000, so that it is in seconds rather than milliseconds.
"""
def __init__(self):
self._poller = Poller()
@staticmethod
def _map_events(events):
"""translate IOLoop.READ/WRITE/ERROR event masks into zmq.POLLIN/OUT/ERR"""
z_events = 0
if events & IOLoop.READ:
z_events |= POLLIN
if events & IOLoop.WRITE:
z_events |= POLLOUT
if events & IOLoop.ERROR:
z_events |= POLLERR
return z_events
@staticmethod
def _remap_events(z_events):
"""translate zmq.POLLIN/OUT/ERR event masks into IOLoop.READ/WRITE/ERROR"""
events = 0
if z_events & POLLIN:
events |= IOLoop.READ
if z_events & POLLOUT:
events |= IOLoop.WRITE
if z_events & POLLERR:
events |= IOLoop.ERROR
return events
def register(self, fd, events):
return self._poller.register(fd, self._map_events(events))
def modify(self, fd, events):
return self._poller.modify(fd, self._map_events(events))
def unregister(self, fd):
return self._poller.unregister(fd)
def poll(self, timeout):
"""poll in seconds rather than milliseconds.
Event masks will be IOLoop.READ/WRITE/ERROR
"""
z_events = self._poller.poll(1000*timeout)
return [ (fd,self._remap_events(evt)) for (fd,evt) in z_events ]
def close(self):
pass
开发者ID:326029212,项目名称:pyzmq,代码行数:53,代码来源:ioloop.py
示例12: __init__
def __init__(self, **kwargs):
self._input_sock = None
self._output_sock = None
self._control_sock = None
# determine if outgoing messages should enable NOBLOCK on send
# default behaviour is to block on a send call till receiver is present
self.no_block_send = False
# configure the interrupt handling
self._stop = True
signal.signal(signal.SIGINT, self._signal_interrupt_handler)
# a regular hearbeat interval must be set to the default.
self.heartbeat = 3 # seconds
# create the zmq context
self.zmq_ctx = Context()
# set the default input receive handler, if none has been assigned
if not hasattr(self, 'input_recv_handler'):
self.input_recv_handler = self._default_recv_handler
# set the default handler, if none has been assigned.
if not hasattr(self, '_command_handler'):
self._command_handler = self._default_command_handler
# construct the poller
self._poll = Poller()
# monitoring of message stream is off by default
self.monitor_stream = False
Scaffold.__init__(self, **kwargs)
开发者ID:neoinsanity,项目名称:windmills,代码行数:34,代码来源:cornerstone.py
示例13: __init__
def __init__(self):
super(HomeBase, self).__init__(name="HomeBase")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.bind("tcp://*:7001")
self._shutdown = False
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
开发者ID:dcolish,项目名称:Presentations,代码行数:8,代码来源:pipeline_sink.py
示例14: __init__
def __init__(self, host, port):
self._host = host
self._port = port
self._context = Context()
self._socket = self._context.socket(REQ)
self._socket.setsockopt(LINGER, 1)
self._socket.connect("tcp://"+host+":"+str(port))
self._poller = Poller()
self._poller.register(self._socket, POLLIN)
开发者ID:gitter-badger,项目名称:pytroll,代码行数:9,代码来源:client.py
示例15: __init__
def __init__(self, host, port):
self._socket = None
self._reqaddress = "tcp://" + host + ":" + str(port)
self._poller = Poller()
self._lock = Lock()
self.failures = 0
self.jammed = False
self.connect()
开发者ID:pytroll,项目名称:pytroll-file-utils,代码行数:9,代码来源:move_it_client.py
示例16: _server
def _server(self, response):
""" Wait for a client request, record it and send the response. """
context = Context()
try:
socket = context.socket(REP)
try:
socket.set(LINGER, 0)
socket.bind("tcp://*:{}".format(_PORT))
poller = Poller()
poller.register(socket, POLLIN)
sockets = dict(poller.poll(_TIMEOUT))
if socket in sockets:
self._client_request = socket.recv_multipart()
if response:
socket.send_multipart(response)
finally:
socket.close()
finally:
context.destroy(linger=0)
开发者ID:GreenelyAB,项目名称:TranslationsClient,代码行数:19,代码来源:test_client.py
示例17: __init__
def __init__(self, context, req_address, pub_address):
self._context = context
self._poller = Poller()
self._nodes_sockets = {} # requests and service sockets
# FIFO request queue for nodes: [in_progress, data, callback(response)]
self._nodes_requests = defaultdict(list) # requests queues for nodes
self._cache = Cache() # the cache
node_id = uuid1().hex # unique node id, based on current time
_LOG.info("node id: %s", node_id)
self._nodes = Nodes(node_id, req_address, pub_address) # other nodes
开发者ID:merry-bits,项目名称:DCache,代码行数:10,代码来源:server.py
示例18: __init__
def __init__(self):
super(Leatherneck, self).__init__(name="Leatherneck")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.connect("tcp://localhost:7000")
self.push = self.context.socket(PUSH)
self.push.connect("tcp://localhost:7001")
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
self._shutdown = False
开发者ID:dcolish,项目名称:Presentations,代码行数:10,代码来源:pipeline_worker.py
示例19: __init__
def __init__(self):
super(Listener, self).__init__(name="Listener")
self._shutdown = False
self.context = Context()
self.sub = self.context.socket(SUB)
self.sub.bind('tcp://*:7000')
self.sub.setsockopt(SUBSCRIBE, "")
self.poller = Poller()
self.poller.register(self.sub, POLLIN)
开发者ID:dcolish,项目名称:Presentations,代码行数:11,代码来源:listener.py
示例20: __init__
def __init__(self):
super(HomeBase, self).__init__(name="HomeBase")
self.context = Context()
self.pull = self.context.socket(PULL)
self.pull.bind("tcp://*:7001")
self._shutdown = False
self.poller = Poller()
self.poller.register(self.pull, POLLIN)
for th in t_enum():
if th.name == "MainThread":
self.mainthread = th
开发者ID:dcolish,项目名称:Presentations,代码行数:11,代码来源:pipeline_producer.py
注:本文中的zmq.Poller类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论