HAPipeline¶
In HA mode, you can have several servers running on separate machines. Only one server will be able to run the pipeline at a time. If a machine fails, another will take over.
Steps¶
Install WaterGrid-Python pip install watergrid==1.0.1
Install Redis (or use the PipelineLock class to create your own global mutex).
Create a pipeline and run it.
from watergrid.pipelines.ha_pipeline import HAPipeline
from watergrid.steps import Step
from watergrid.context import DataContext
from watergrid.locks import RedisPipelineLock
class SampleStep(Step):
def __init__(self):
super().__init__(self.__class__.__name__)
def run(self, context: DataContext):
print("Hello World!")
def main():
pipeline_name = "sample_pipeline"
redis_lock = RedisPipelineLock()
# Call redis_lock.set_XXXX to configure connection properties if needed.
redis_lock.connect() # Required by RedisPipelineLock, does not apply to all locks.
pipeline = HAPipeline(pipeline_name, redis_lock)
pipeline.add_step(SampleStep())
while True:
pipeline.run()
if __name__ == '__main__':
main()
If Redis is not running on localhost on port 6379, you can call redis_lock.set_XXXX() to set those values accordingly.