-
Notifications
You must be signed in to change notification settings - Fork 58
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
Pyblish DAG #330
Comments
An interesting library; https://github.com/spotify/pythonflow |
Yes, it was all looking well, until I noticed they have ZeroMQ as a dependency.. good luck distributing anything for Maya using that.. Unfortunate! Almost curious about how tied it is exactly, and how much work it would involve to strip that dependency. It's clearly there for performance reasons (millions to trillions of tasks; they are Spotify) whereas we'd only need if for tens to hundreds. |
This seems to me that it's only for distribution of the processing that they depend on ZeroMQ. Which could indicate that we could use other distribution methods for processing. When I get some time I'll dig deeper into this library and try with a prototype for Pyblish. |
Ah, that would make sense. I was thrown off by this. |
Hmmm, you may be right about that the library is dependent on ZeroMQ, but the code doesn't seem to need it. Will see what happens when I take for a test drive. |
Add one repo that is DAG related |
Mentioning this here as they are somewhat related. |
Hi guys, I created an example on how to convert a pyblish context into a flowpipe graph, it's actually pretty straight forward, please take a look at this gist: https://gist.github.com/PaulSchweizer/0256b942406a9e765b2a3858b09cf8c4 This is just a conversion, meaning that the pyblish context is analyzed and then assembled into an according flowpipe graph with a node for each plugin and instance. It does not need any implementation in pyblish itself! We are currently mainly using this technique to push pyblish to our render farm (see below) but this also addresses most of the initial points raised in this ticket. In general flowpipe offers a very simple api that allows for arbitrary node graph creation. Things to note:
|
That's slick :) Thanks for sharing |
Goal
Provide a framework working with Pyblish plugins as nodes in a DAG.
Motivation
The current system of ordering plugins for predictable sequential execution has served Pyblish well, but it has got its drawbacks:
Sharing Plugins
I see these drawbacks as also hindering the Pyblish plugin ecosystem from being shareable. Taking a plugin from someone else's pipeline and inserting directly into your own, are destined for modification. How do you make sure that the external plugin operates on the desired data?
With ordering you will need to make sure that the order of the plugin fits into your pipeline, and already then you are modifying the code.
With a DAG system you could just insert the plugin into the pipeline and connect to your existing plugins without any code modification.
Multithread/multiprocess
By chaining plugins we have a predictable set of plugins that can be separated and put into another process or thread, to speed up the publishing.
Imlementation
The recent years there has been an increase in node based setups in DCCs where Nuke and Houdini are worth mentioning. From these systems we can make a list of what is required from a DAG implementation of Pyblish:
Existing solutions
Unfortunately I have not encountered a framework for Python that allows for the flexibility we need for this to work. Explorations into adopting existing solutions have been made. These explorations were motivated by #143, which generated this issue.
For the lack of existing solutions I started experimenting and arrived at a proof of concept.
I believe this framework can be developed into its own identity, and maybe fill the visual programming gap for Python fueled by Pyblish DAG.
The mentality of the framework being that "Everything is a method, that return data".
For UI there are existing solution we can take advantage of, and worth mentioning are; https://github.com/LeGoffLoic/Nodz and https://github.com/mfessenden/SceneGraph.
The text was updated successfully, but these errors were encountered: