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:
queue – Name of the Redis queue to listen to (default:
platypush/backend/redis
).redis_args – 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.
- 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, orNone
).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.