Code Monkey home page Code Monkey logo

cronicl's Issues

Persist State

Build resilience by making the unit which records state disposable, state able to be recovered, e.g. from a database

implement tracing

message as a traced attribute

any messages out of a stage get their traced attribute set to match the incoming message

traced messages are written out to a trace-log

Allow multiple pipelines run in one process

Pipelines need a unique name/id

A pipeline manager needs to hold multiple pipelines

Reply queue, and every queue, needs to be named according to the pipeline id

Pipelines may need a trigger, such as a file watcher or a timer, to start the pipeline

remove all pumps

replace with a 'virtual' pump, which kicks off any other nodes with no incoming nodes

the virtual pump, called by a rewritten 'execute'

execute tests if the incoming param is a generator or a value, if it's a value it calls inner_execute, if it's a generator, it iterates through the values calling inner_execute

execute sets the tracing on the messages

Stages should have a 'busy' attribute

running is currently determined by there being no messages in queues, this will cause premature termination if there is a long running job with no waiting messages.

running should check for empty queues and the busy attribute.

Create a Collector Stage pattern

Collectors will collate information across multiple messages (for example to calculate the maximum) and then emit the result on an EMIT message.

Collectors should reset their counters on a RESET message.

Stage should trap and count errors

call should wrap the execute in a try block, count the exceptions and add exception count to the sensor list.

have an error bin for errors to be sent to

File watching pump

A pump that watches for a file to be created and stop being written to before triggering the start of a pipeline

Use queing to communicate between stages

rather than have a synchronous control flow, have each step pick up and drop off to a queue, this is a step toward enabling stages to run in different threads, processes or containers

API interface

Initially just report status via a RESTful API

Number of items in each queue
The number of items passed through each stage

Calculate a relative priority for stages

Use as a basis to prioritize stages when the pipeline gets congested;

Prefer stages with lower in:out ratios (reduce the number of records, or create few new records)
When there are matching ratios, prefer stages toward the end of the flow

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.