src/pyams_zmq/process.py
changeset 22 05aaf0acf4fb
parent 18 cd5a88ba2223
child 25 9352acb9366b
equal deleted inserted replaced
21:6bcc3d05459e 22:05aaf0acf4fb
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 
       
    16 # import standard library
       
    17 import multiprocessing
    15 import multiprocessing
    18 import signal
    16 import signal
    19 import sys
    17 import sys
       
    18 
    20 import zmq
    19 import zmq
    21 
       
    22 # import interfaces
       
    23 from pyams_zmq.interfaces import IZMQProcess
       
    24 
       
    25 # import packages
       
    26 from zmq.auth.thread import ThreadAuthenticator
    20 from zmq.auth.thread import ThreadAuthenticator
    27 from zmq.eventloop import ioloop, zmqstream
    21 from zmq.eventloop import ioloop, zmqstream
    28 from zope.interface import implementer
    22 from zope.interface import implementer
       
    23 
       
    24 from pyams_utils.registry import get_global_registry
       
    25 from pyams_zmq.interfaces import IZMQProcess, ZMQProcessStartedEvent
    29 
    26 
    30 
    27 
    31 @implementer(IZMQProcess)
    28 @implementer(IZMQProcess)
    32 class ZMQProcess(multiprocessing.Process):
    29 class ZMQProcess(multiprocessing.Process):
    33     """
    30     """
    73 
    70 
    74     def run(self):
    71     def run(self):
    75         """Sets up everything and starts the event loop."""
    72         """Sets up everything and starts the event loop."""
    76         signal.signal(signal.SIGTERM, self.exit)
    73         signal.signal(signal.SIGTERM, self.exit)
    77         self.setup()
    74         self.setup()
       
    75         registry = get_global_registry()
       
    76         registry.notify(ZMQProcessStartedEvent(self))
    78         self.loop.start()
    77         self.loop.start()
    79 
    78 
    80     def stop(self):
    79     def stop(self):
    81         """Stops the event loop."""
    80         """Stops the event loop."""
    82         if self.loop is not None:
    81         if self.loop is not None: