This document is for Kombu's development version, which can be significantly different from previous releases. Get the stable docs here: 4.1.
Pidbox - kombu.pidbox
¶
Generic process mailbox.
Introduction¶
Creating the applications Mailbox¶
>>> mailbox = pidbox.Mailbox('celerybeat', type='direct')
>>> @mailbox.handler
>>> def reload_schedule(state, **kwargs):
... state['beat'].reload_schedule()
>>> @mailbox.handler
>>> def connection_info(state, **kwargs):
... return {'connection': state['connection'].info()}
Example Node¶
>>> connection = kombu.Connection()
>>> state = {'beat': beat,
'connection': connection}
>>> consumer = mailbox(connection).Node(hostname).listen()
>>> try:
... while True:
... connection.drain_events(timeout=1)
... finally:
... consumer.cancel()
Example Client¶
>>> mailbox.cast('reload_schedule') # cast is async.
>>> info = celerybeat.call('connection_info', timeout=1)
Mailbox¶
-
class
kombu.pidbox.
Mailbox
(namespace, type=u'direct', connection=None, clock=None, accept=None, serializer=None, producer_pool=None, queue_ttl=None, queue_expires=None, reply_queue_ttl=None, reply_queue_expires=10.0)[source]¶ Process Mailbox.
-
namespace
= None¶ Name of application.
-
connection
= None¶ Connection (if bound).
-
type
= u'direct'¶ Exchange type (usually direct, or fanout for broadcast).
-
exchange
= None¶ mailbox exchange (init by constructor).
-
reply_exchange
= None¶ exchange to send replies to.
-
Node¶
-
class
kombu.pidbox.
Node
(hostname, state=None, channel=None, handlers=None, mailbox=None)[source]¶ Mailbox node.
-
hostname
= None¶ hostname of the node.
-
handlers
= None¶ map of method name/handlers.
-
state
= None¶ current context (passed on to handlers)
-
channel
= None¶ current channel.
-
dispatch_from_message
(body, message=None)¶
-