Plugin Decorators
The Hoppr framework provides two Python decorators to simplify the development of plugin processes.
1. @hoppr_process​
The @hoppr_process
decorator handles several tasks that any implementation of pre_stage_process
, process_component
, or post_stage_process
must perform. These include:
Creation of a logger (accessible via the
get_logger()
method) to which information may be written regarding the execution of the process. This is an "in-memory" logger, which is copied to stdout at the completion of the processes, thereby preventing interleaving log messages from multiple processes running in parallel.Logging of certain standard events: start and completion of the process, run time, and result.
For
process_component
(or any method that passes an argument of typeComponent
), check that the process is appropriate to the PURL type of the component.At process completion, close the logger, and dump its contents to stdout.
2. @hoppr_rerunner​
The @hoppr_rerunner
decorator runs a process repeatedly, up to the value max_attempts
specified in the Context, waiting for retry_wait_seconds
(also from the Context) seconds between attempts.
3. Combining the decorators​
The two decorators can (and often will be) combined for a single method. We recommend that the order be:
@hoppr_process
@hoppr_rerunner
def process_component(....)
Reversing the decorator order will still work, but will be slightly less efficient - creating and destroying loggers and logging data for each attempt.