-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Run dynamic node #517
Run dynamic node #517
Conversation
So the idea of this is that nodes are started manually and then matched by name, am I understanding this correctly? So kind of a hybrid between the current declarative apporach and an "interactive dataflow" feature, where nodes can connect to the daemon dynamically, without being specified in a dataflow YAML file. I'm not sure if Another things that I don't understand yet: Are the |
48397cf
to
f050496
Compare
Yes, basically, you can spawn a new node without using Additional change enables to not spawn the node as well as not close its output when stopping so that we can spawn multiple time a "detached" node. In my opinion, this does not break the declarative paradigm as the input and outputs are still specified within the dataflow, just not the spawning. The I think we can add |
I'm still in favor of throwing an error. Commenting out the A warning would be better than nothing, but it is easy to miss. |
I don't think that this is a good idea because it's a subtle behavior change in a feature intended for debugging. Consider the following situation:
|
Side notes, not directly related to this PR:
@haixuanTao @heyong4725 What do you think about this? |
So, to be more explicit, I have added a filter on the daemon to only wait for nodes that are not detached. So using:
Will gracefully stop the dataflow. I understand that this could potentially introduce additional edge cases, but it seems to me that being able to start and stop a specific node be more useful than the worries about not being able to debug a downstream node that might not gracefully stop from InputClosed situation. |
Pinging back on this, I hope that this PR is a stepping stone on having more dynamic node indeed to have more freedom to send message to the dataflow. |
15c8286
to
42865e3
Compare
What about using source <=> path use another special keyword like: Just to be clear, this PR don't touch at the build script. So anything calling Back on the topic of not closing input. I think that it is more intuitive that the node are not stopped because a node is interactive than, that node are stopped after closing the interactive node. |
It would look something like: nodes:
- id: webcam
source: ./webcam.py
inputs:
tick:
source: dora/timer/millis/50
queue_size: 1000
outputs:
- image
- id: object_detection
source: ./object_detection.py
inputs:
image: webcam/image
outputs:
- bbox
- id: plot
source: interactive
inputs:
image: webcam/image
bbox: object_detection/bbox
|
Good idea, I like it!
Ah, then disregard my concern. I misinterpreted your "The |
42865e3
to
3c21fd6
Compare
3c21fd6
to
3ad402c
Compare
1dd8f15
to
d180aa7
Compare
c15356b
to
fe8722b
Compare
…RA_NODE_CONFIG if it exists. This remove the complexity of having to rename the node id when used within a yaml configuration.
FYI @phil-opp , I made a new I have removed an assertion on node_id to make it less complicated and always use Would love to have a last round of review to make sure we're on the same page. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, looks ready for merging!
Description
This PR makes it possible to run process as a dynamic process to be able to debug, run tests as well as run python file interactively.
Getting started
In the YAML graph
For python
For rust
To run
For python
For rust