Module autobahn.asyncio
¶
Autobahn asyncio specific classes. These are used when asyncio is run as the underlying networking framework.
Component¶
The component API provides a high-level funcional style method of defining and running WAMP components including authentication configuration
- class autobahn.asyncio.component.Component(main=None, transports=None, config=None, realm='realm1', extra=None, authentication=None, session_factory=None, is_fatal=None)[source]¶
A component establishes a transport and attached a session to a realm using the transport for communication.
The transports a component tries to use can be configured, as well as the auto-reconnect strategy.
- Parameters
main (callable taking two args
reactor
andISession
) – After a transport has been connected and a session has been established and joined to a realm, this (async) procedure will be run until it finishes – which signals that the component has run to completion. In this case, it usually doesn’t make sense to use theon_*
kwargs. If you do not pass a main() procedure, the session will not be closed (unless you arrange for .leave() to be called).transports (None or str or list) –
Transport configurations for creating transports. Each transport can be a WAMP URL, or a dict containing the following configuration keys:
type
(optional):websocket
(default) orrawsocket
url
: the router URLendpoint
(optional, derived from URL if not provided):type
: “tcp” or “unix”host
,port
: only for TCPpath
: only for unixtimeout
: in secondstls
:True
or (under Twisted) antwisted.internet.ssl.IOpenSSLClientComponentCreator
instance (such as returned fromtwisted.internet.ssl.optionsForClientTLS
) orCertificateOptions
instance.
max_retries
: Maximum number of reconnection attempts. Unlimited if set to -1.initial_retry_delay
: Initial delay for reconnection attempt in seconds (Default: 1.0s).max_retry_delay
: Maximum delay for reconnection attempts in seconds (Default: 60s).retry_delay_growth
: The growth factor applied to the retry delay between reconnection attempts (Default 1.5).retry_delay_jitter
: A 0-argument callable that introduces nose into the delay. (Default random.random)serializer
(only for raw socket): Specify an accepted serializer (e.g. ‘json’, ‘msgpack’, ‘cbor’, ‘ubjson’, ‘flatbuffers’)serializers
: Specify list of accepted serializersoptions
: tbdproxy
: tbd
realm (str) – the realm to join
authentication (dict) – configuration of authenticators
session_factory – if None,
ApplicationSession
is used, otherwise a callable taking a singleconfig
argument that is used to create a new ApplicationSession instance.is_fatal – a callable taking a single argument, an
Exception
instance. The callable should returnTrue
if this error is “fatal”, meaning we should not try connecting to the current transport again. The default behavior (on None) is to always returnFalse
- session_factory¶
The factory of the session we will instantiate.
alias of
Session
- start(loop=None)[source]¶
This starts the Component, which means it will start connecting (and re-connecting) to its configured transports. A Component runs until it is “done”, which means one of: - There was a “main” function defined, and it completed successfully; - Something called
.leave()
on our session, and we left successfully; -.stop()
was called, and completed successfully; - none of our transports were able to connect successfully (failure);- Returns
a Future which will resolve (to
None
) when we are “done” or with an error if something went wrong.
- autobahn.asyncio.component.run(components, start_loop=True, log_level='info')[source]¶
High-level API to run a series of components.
This will only return once all the components have stopped (including, possibly, after all re-connections have failed if you have re-connections enabled). Under the hood, this calls
XXX fixme for asyncio
– if you wish to manage the loop yourself, use the
autobahn.asyncio.component.Component.start()
method to start each component yourself.- Parameters
components (instance or list of
autobahn.asyncio.component.Component
) – the Component(s) you wish to runstart_loop (bool) – When
True
(the default) this method start a new asyncio loop.log_level (string) – a valid log-level (or None to avoid calling start_logging)
WebSocket Protocols and Factories¶
Classes for WebSocket clients and servers using asyncio.
- class autobahn.asyncio.websocket.WebSocketServerProtocol[source]¶
Base class for asyncio-based WebSocket server protocols.
Implements:
- class autobahn.asyncio.websocket.WebSocketClientProtocol[source]¶
Base class for asyncio-based WebSocket client protocols.
Implements:
- class autobahn.asyncio.websocket.WebSocketServerFactory(*args, **kwargs)[source]¶
Base class for asyncio-based WebSocket server factories.
Implements:
Note
In addition to all arguments to the constructor of
autobahn.websocket.interfaces.IWebSocketServerChannelFactory()
, you can supply aloop
keyword argument to specify the asyncio event loop to be used.- protocol¶
alias of
WebSocketServerProtocol
- class autobahn.asyncio.websocket.WebSocketClientFactory(*args, **kwargs)[source]¶
Base class for asyncio-based WebSocket client factories.
Implements:
Note
In addition to all arguments to the constructor of
autobahn.websocket.interfaces.IWebSocketClientChannelFactory()
, you can supply aloop
keyword argument to specify the asyncio event loop to be used.
WAMP-over-WebSocket Protocols and Factories¶
Classes for WAMP-WebSocket clients and servers using asyncio.
- class autobahn.asyncio.websocket.WampWebSocketServerProtocol[source]¶
asyncio-based WAMP-over-WebSocket server protocol.
Implements:
- class autobahn.asyncio.websocket.WampWebSocketClientProtocol[source]¶
asyncio-based WAMP-over-WebSocket client protocols.
Implements:
- class autobahn.asyncio.websocket.WampWebSocketServerFactory(factory, *args, **kwargs)[source]¶
asyncio-based WAMP-over-WebSocket server factory.
- Parameters
factory (callable) – A callable that produces instances that implement
autobahn.wamp.interfaces.ITransportHandler
serializers (list of objects implementing
autobahn.wamp.interfaces.ISerializer
) – A list of WAMP serializers to use (orNone
for all available serializers).
- protocol¶
alias of
WampWebSocketServerProtocol
- class autobahn.asyncio.websocket.WampWebSocketClientFactory(factory, *args, **kwargs)[source]¶
asyncio-based WAMP-over-WebSocket client factory.
- Parameters
factory (callable) – A callable that produces instances that implement
autobahn.wamp.interfaces.ITransportHandler
serializer (object implementing
autobahn.wamp.interfaces.ISerializer
) – The WAMP serializer to use (orNone
for “best” serializer, chosen as the first serializer available from this list: CBOR, MessagePack, UBJSON, JSON).
- protocol¶
alias of
WampWebSocketClientProtocol
WAMP-over-RawSocket Protocols and Factories¶
Classes for WAMP-RawSocket clients and servers using asyncio.
- class autobahn.asyncio.rawsocket.WampRawSocketServerProtocol[source]¶
asyncio-based WAMP-over-RawSocket server protocol.
Implements:
- class autobahn.asyncio.rawsocket.WampRawSocketClientProtocol[source]¶
asyncio-based WAMP-over-RawSocket client protocol.
Implements:
- class autobahn.asyncio.rawsocket.WampRawSocketServerFactory(factory, serializers=None)[source]¶
asyncio-based WAMP-over-RawSocket server protocol factory.
- Parameters
factory (callable) – A callable that produces instances that implement
autobahn.wamp.interfaces.ITransportHandler
serializers (list of objects implementing
autobahn.wamp.interfaces.ISerializer
) – A list of WAMP serializers to use (orNone
for all available serializers).
- protocol¶
alias of
WampRawSocketServerProtocol
- class autobahn.asyncio.rawsocket.WampRawSocketClientFactory(factory, serializer=None)[source]¶
asyncio-based WAMP-over-RawSocket client factory.
- Parameters
factory (callable) – A callable that produces instances that implement
autobahn.wamp.interfaces.ITransportHandler
serializer (object implementing
autobahn.wamp.interfaces.ISerializer
) – The WAMP serializer to use (orNone
for “best” serializer, chosen as the first serializer available from this list: CBOR, MessagePack, UBJSON, JSON).
- protocol¶
alias of
WampRawSocketClientProtocol
WAMP Sessions¶
Classes for WAMP sessions using asyncio.
- class autobahn.asyncio.wamp.ApplicationSession(config: Optional[ComponentConfig] = None)[source]¶
WAMP application session for asyncio-based applications.
Implements:
autobahn.wamp.interfaces.ITransportHandler
autobahn.wamp.interfaces.ISession
Implements
autobahn.wamp.interfaces.ISession()
- class autobahn.asyncio.wamp.ApplicationRunner(url, realm=None, extra=None, serializers=None, ssl=None, proxy=None, headers=None)[source]¶
This class is a convenience tool mainly for development and quick hosting of WAMP application components.
It can host a WAMP application component in a WAMP-over-WebSocket client connecting to a WAMP router.
- Parameters
url (str) – The WebSocket URL of the WAMP router to connect to (e.g. ws://somehost.com:8090/somepath)
realm (str) – The WAMP realm to join the application session to.
extra (dict) – Optional extra configuration to forward to the application component.
serializers (list) – A list of WAMP serializers to use (or None for default serializers). Serializers must implement
autobahn.wamp.interfaces.ISerializer
.ssl (
ssl.SSLContext
or bool) – An (optional) SSL context instance or a bool. See the documentation for the loop.create_connection asyncio method, to which this value is passed as thessl
keyword parameter.proxy (dict or None) – Explicit proxy server to use; a dict with
host
andport
keysheaders (dict) – Additional headers to send (only applies to WAMP-over-WebSocket).
- run(make, start_loop=True, log_level='info')[source]¶
Run the application component. Under the hood, this runs the event loop (unless start_loop=False is passed) so won’t return until the program is done.
- Parameters
make (callable) – A factory that produces instances of
autobahn.asyncio.wamp.ApplicationSession
when called with an instance ofautobahn.wamp.types.ComponentConfig
.start_loop (bool) – When
True
(the default) this method start a new asyncio loop.
- Returns
None is returned, unless you specify start_loop=False in which case the coroutine from calling loop.create_connection() is returned. This will yield the (transport, protocol) pair.