This document is for Kombu's development version, which can be significantly different from previous releases. Get the stable docs here: 5.0.
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='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 = '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)¶