Comments (8)
So funnel would publish task updates to a messaging system, and clients would subscribe to that (more scalable) system?
from funnel.
Yes, that's a sensible implementation. Maybe there's a way at task submission time to also provide a URL to POST status updates to. Then Funnel doesn't have to know about the pub/sub system, and it can be a separate thing. I don't now if pub/sub systems typically have a REST API though.
from funnel.
What is the delivery guarantee for the publishing? At most once?
from funnel.
Good question. Whatever guarantee the selected pub/sub implementation provides?
from funnel.
At most once delivery from Funnel would (obviously) be the least complex, and for that reason my preference. However, while the pub/sub server maybe be 99.999% available, in that 0.001% of the time when the message is lost, a subscriber would not recover (e.g. it might never see that a task finished).
An alternative could be publishing "current state" messages instead of "state change" messages. I.e. Funnel publishes an event every N seconds that says "task X is running".
from funnel.
Sure, letting Funnel be a pub/sub provider is the easiest first pass.
A pub/sub server would be more reliable. It would be up to callers to check for the rare cases where messages get lost. That seems fine.
I'd recommend against sending heartbeats out by pub/sub. The main motivation for pub/sub rather than polling is to cut down overhead with too-frequent state updates.
from funnel.
We have defined an events package here:
https://github.com/ohsu-comp-bio/funnel/tree/master/events
I have stackdriver logging event writer on a branch here: https://github.com/buchanae/funnel/blob/smcrna/gcp/stackdriver.go
A Google pub/sub writer would be easy to add.
This issue also mentions using pub/sub (or app engine task queues, rabbitmq, celery, etc) as the internal work queue (as opposed to events from a task that is already running). The smcrna branch linked above is using pub/sub.
Do we need an API endpoint which clients can use to subscribe to task events? Would this become part of the TES spec? Or are clients expected to connect directly to the underlying infrastructure (e.g. Google pub/sub)?
from funnel.
Basic support added for our event stream in #465
The event messages Funnel currently emits are defined here:
https://github.com/ohsu-comp-bio/funnel/blob/master/events/events.proto
from funnel.
Related Issues (20)
- TES v1.1: Create task with ignore_error flag
- TES: List task with next page token
- Failing lint job in tests
- github.com/golang/protobuf deprecation
- Homebrew formula returns "wrong number of arguments" error
- funnel binary not found during Slurm tests HOT 1
- Configuration for replacing path prefixes
- Boltdb deprecation HOT 2
- Task ID returned before database doc is created
- Feature Request: Add support for native K8s Executor
- Add Snakemake workflow tests to Funnel
- Funnel Tasks Fail when used as a TES Executor for Nextflow HOT 2
- The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested HOT 1
- Allow Funnel to run tasks against custom domain socket HOT 1
- Add option to connect to Gen3 systems
- Expose backend parameter to run container with additional permissions
- Funnel does not detect terminated instances on AWS
- Authentication failure connecting to mongodb HOT 1
- funnel 0.11 problems with mongodb
- funnel 0.11 error with AWS batch reconciler
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from funnel.