redis#

Description#

Backend that reads messages from a configured Redis queue (default: platypush/backend/redis) and forwards them to the application bus.

Useful when you have plugin whose code is executed in another process and can’t post events or requests to the application bus.

Configuration#

backend.redis:
  # [Optional]
  # Name of the Redis queue to listen to (default:
  # ``platypush/backend/redis``).
  # queue: platypush/backend/redis  # type=str

  # [Optional]
  # Arguments that will be passed to the redis-py
  # constructor (e.g. host, port, password). See
  # https://redis-py.readthedocs.io/en/latest/connections.html#redis.Redis
  # for supported parameters.
  # redis_args:   # type=Optional[Dict[str, Any]]

  # [Optional]
  # Reference to the bus object to be used in the backend
  # bus:   # type=Optional[platypush.bus.Bus]

  # [Optional]
  # If the backend implements a ``loop`` method, this parameter expresses how often the
  # loop should run in seconds.
  # poll_seconds:   # type=Optional[float]

Module reference#

class platypush.backend.redis.RedisBackend(*args, queue: str = 'platypush/backend/redis', redis_args: Dict[str, Any] | None = None, **kwargs)[source]#

Bases: Backend

Backend that reads messages from a configured Redis queue (default: platypush/backend/redis) and forwards them to the application bus.

Useful when you have plugin whose code is executed in another process and can’t post events or requests to the application bus.

__init__(*args, queue: str = 'platypush/backend/redis', redis_args: Dict[str, Any] | None = None, **kwargs)[source]#
Parameters:
property daemon#

A boolean value indicating whether this thread is a daemon thread.

This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.

The entire Python program exits when only daemon threads are left.

getName()#

Return a string used for identification purposes only.

This method is deprecated, use the name attribute instead.

property ident#

Thread identifier of this thread or None if it has not been started.

This is a nonzero integer. See the get_ident() function. Thread identifiers may be recycled when a thread exits and another thread is created. The identifier is available even after the thread has exited.

isDaemon()#

Return whether this thread is a daemon.

This method is deprecated, use the daemon attribute instead.

is_alive()#

Return whether the thread is alive.

This method returns True just before the run() method starts until just after the run() method terminates. See also the module function enumerate().

join(timeout=None)#

Wait until the thread terminates.

This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception or until the optional timeout occurs.

When the timeout argument is present and not None, it should be a floating-point number specifying a timeout for the operation in seconds (or fractions thereof). As join() always returns None, you must call is_alive() after join() to decide whether a timeout happened – if the thread is still alive, the join() call timed out.

When the timeout argument is not present or None, the operation will block until the thread terminates.

A thread can be join()ed many times.

join() raises a RuntimeError if an attempt is made to join the current thread as that would cause a deadlock. It is also an error to join() a thread before it has been started and attempts to do so raises the same exception.

property name#

A string used for identification purposes only.

It has no semantics. Multiple threads may be given the same name. The initial name is set by the constructor.

property native_id#

Native integral thread ID of this thread, or None if it has not been started.

This is a non-negative integer. See the get_native_id() function. This represents the Thread ID as reported by the kernel.

on_message(msg)#

Callback when a message is received on the backend. It parses and posts the message on the main bus. It should be called by the derived classes whenever a new message should be processed.

Parameters:

msg – Received message. It can be either a key-value dictionary, a platypush.message.Message object, or a string/byte UTF-8 encoded string

on_stop()#

Callback invoked when the process stops

register_service(port: int | None = None, name: str | None = None, srv_type: str | None = None, srv_name: str | None = None, udp: bool = False, properties: Dict | None = None)#

Initialize the Zeroconf service configuration for this backend.

Parameters:
  • port – Service listen port (default: the backend port attribute if available, or None).

  • name – Service short name (default: backend name).

  • srv_type – Service type (default: _platypush-{name}._{proto}.local.).

  • srv_name – Full service name (default: {hostname or device_id}.{type}).

  • udp – Set to True if this is a UDP service.

  • properties

    Extra properties to be passed on the service. Default:

    {
        "name": "Platypush",
        "vendor": "Platypush",
        "version": "{platypush_version}"
    }
    

run()[source]#

Starts the backend thread. To be implemented in the derived classes if the loop method isn’t defined.

send_event(event, **kwargs)#

Send an event message on the backend.

Parameters:

event – Event to send. It can be a dict, a string/bytes UTF-8 JSON, or a platypush.message.event.Event object.

send_message(msg: str | Message, queue_name: str | None = None, **_)[source]#

Send a message to a Redis queue.

Parameters:
  • msg – Message to send, as a Message object or a string.

  • queue_name – Queue name to send the message to (default: configured queue value).

send_request(request, on_response=None, response_timeout=5, **kwargs)#

Send a request message on the backend.

Parameters:
  • request – The request, either a dict, a string/bytes UTF-8 JSON, or a platypush.message.request.Request object.

  • on_response (function) – Optional callback that will be called when a response is received. If set, this method will synchronously wait for a response before exiting.

  • response_timeout (float) – If on_response is set, the backend will raise an exception if the response isn’t received within this number of seconds (default: None)

send_response(response, request, **kwargs)#

Send a response message on the backend.

Parameters:
  • response – The response, either a dict, a string/bytes UTF-8 JSON, or a platypush.message.response.Response object.

  • request – Associated request, used to set the response parameters that will link them

setDaemon(daemonic)#

Set whether this thread is a daemon.

This method is deprecated, use the .daemon property instead.

setName(name)#

Set the name string for this thread.

This method is deprecated, use the name attribute instead.

should_stop()#
Returns:

True if the backend thread should be stopped, False otherwise.

start()#

Start the thread’s activity.

It must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control.

This method will raise a RuntimeError if called more than once on the same thread object.

stop()#

Stops the backend thread by sending a STOP event on its bus

unregister_service()#

Unregister the Zeroconf service configuration if available.

wait_stop(timeout=None) bool#

Waits for the backend thread to stop.

Parameters:

timeout – The maximum time to wait for the backend thread to stop (default: None)

Returns:

True if the backend thread has stopped, False otherwise.