Entities¶
Worker¶
Worker encapsulates logic related to certain area in solar. Current we have next workers:
- Scheduler
- Correctly initates execution plans and updates state of tasks.
- Tasks
- Execute tasks scheduled by Scheduler worker
- System log
- Updates system log e.g. commits and moves log item from staged log to history, or in case of error updates log item as erred
Executors¶
Each executor module should provide:
- Executor
- Executor responsible for processing events and handle them via given worker. Concurrency policies is up to the executor implementation.
- Client
- Client communicates with executor
In current version of Solar we are using executor based on Push/Pull zeromq sockets, and gevent pool for concurrent processing of events.
Subscriptions¶
Each public method of worker is subscribable, in current version 4 events are available to subscribers.
- on_success
- Called in the case of successful execution, provides context, result and event arguments
- on_error
- Called in the case of error, prorives context, error type, event arguments
- before
- Called before method execution, provides only context
- after
- Called after method executuon, provides only context
To subscribe use:
worker.method.on_sucess(callable)
Additionally each worker provides for_all descriptor which allows to subscribe to all public methods:
worker.for_all.before(callable)