Recommended workflow for multiple executables


#1

Hello,
I am very new to Deadline and have been so far been playing with deadlinecommand as all of my jobs will be non gui. I am still not sure if one would use plugins for non gui scripts. I can’t find any examples of plugins that don’t use a gui.

But, my question is: If I’m using multiple steps in a job which requires multiple executables can I have one job start another when complete and then that job start another?

The particular jobs I have in mind involves the following:

  1. convert cr2 sequence to exr.
  2. create another seq of exr (resized, new colorspace)
  3. create raw dnxhd media for HD
  4. create raw dnxhr media for UHD
  5. create AAFs
  6. create new version in shotgun

This all needs to get fired off from a tool that currently generates a json file with all of the needed info (filenames, metadata, path dirs, etc). All of my test conversions have been using openimageio, ffmpeg, and custom python tools.

So, really, I guess my question is: Should I be creating a non gui plugin or just write one python script that runs everything in the right order.

My concern about the python script running everything and run via deadlinecommand is that I’d really like each step to show up in Monitor and with it’s current status (ex. frame 4/55 or 20%, etc) for the end user to monitor.

Thanks for any advice. I’d love to hear how people are running non-gui scripts and also how one handles many steps that each can be monitored in Monitor.

Thank you.


#2

Hey Trevor_Cable,

Welcome!

But, my question is: If I’m using multiple steps in a job which requires multiple executables can I have one job start another when complete and then that job start another?

Yes, this is called job dependency. During or after submission, you can set a job dependency to await for a specified state update on another job or jobs (i.e. “completed” state). Also available via scripting.

So, really, I guess my question is: Should I be creating a non gui plugin or just write one python script that runs everything in the right order.

You might be able to avoid writing a custom plugin all together if the existing plugins packaged with Deadline suffice. For example, there already exists an FFmpeg and Python plugin. You’d just need to pass the necessary parameters for the job type.

I’d really like each step to show up in Monitor and with it’s current status (ex. frame 4/55 or 20%, etc) for the end user to monitor.

This can be accomplished by submitting one job for every step and setting their dependencies in way their execution is ordered. It’s recommended when submitting multiple jobs that are related to set their Batch Name property, this way they appear “grouped” together in the monitor. If you have parts of work that doesn’t need a GUI monitoring, you could use job dependency scripts.

I venture all this could be written into a python script to fill out the job properties and orchestrate the submissions. Here’s an example python submission script.

Hopefully this makes sense and is helpful.


#3

Thank you for your response. I did give this a shot and it works great using the deadlinecommand so I’m sure with a python script I can make this work well. I also found the BatchName variable to keep it all together as one large “job”.


#4

The script example you recommended had everything needed to explain what I needed to do. Already up and running. Thanks for that.

-Cable