how can I update the progress bar of a job?


#1

We have our own python plugin, how can I update the progress bar of a job from an external process?


#2

Not possible from an external process. Is this really want you need to do here? This line within your Deadline plugin will set the progress of the current task being rendered to 50%. Then, based on the total number of tasks in your Deadline job, the progress bar will automatically update accordingly. ie: if your job has only 1 task, then it too would then display 50% upon the next DB/monitor refresh. (Make sure you use a float and not an integer).

DeadlinePlugin.SetProgress( 50.0 )

docs.thinkboxsoftware.com/produc … 6011018760


#3

@MikeOwen

Thanks, I think this will do for now, its just for 1 task per job Jobs.


#4

Question for folks on this one: How many people would appreciate the command line and Python plugins shipping with a default “setProgress” check so that when you wrote “Deadline Progress: 20%” from standard output it would automatically set the progress in the Deadline UI?

Basic usage from a shell script would be:

progress = 20
echo "Deadline Progress: $progress%"

From Python:

progress = 20
print("Deadline Progress: {}%".format(progress))

#5

Sorry to jump on someone else’s ticket, but I would use that functionality all the time. I do a lot of random batching of stuff with the CommandLine and Python modules, so this would be great for me.


#6

Cool. I’ve just added this internally to 8.1. Thanks for the feedback!


#7

Yeah, Mike jumped on it really quickly! Here’s the diff:

progress-patch.diff.txt (3.97 KB)


#8

I am using Version 10.0.18.1.

I tried typing self.SetProgress (progress) -> self.SetProgress (50.0) directly on commandline.py, but it was not reflected in the Progress Bar.

Why?


#9

That should do it. There’s also progress reporting in the Slave UI but that should be immediately reflected in the tasks…

It may be that the event isn’t being called at all. The HandleProgress will only occur if this regular expression matches: .*Progress: (\d+)%.*

For fun, you could add self.SetProgress(50.0) in the InitializeProcess.

I also just realized here that if you are using the “Shell Execute” option, the progress reporting is handled by the ShellManagedProcess class which does not have a progress handler inside of it. Are you using that feature?


Python script update progress
#10

Deadline Client 10.0.23.4
Windows 10

I’m having the same issue (On Windows). When running from the CommandLine plugin, the progress is not updated. However, progress IS showed when the AfterEffects.py plugin is being run. The Slave Log uses the same STDOUT log format in either case.

I tried the following steps

  • Utilize the Stdout regex from the AfterEffects plugin inside CommandLine (along with instance vars and methods to calculate progress)
  • self.SetProgress(50.0) in InitializeProcess
  • set self.StdoutHandling = True

In RenderTasks(), ShellExecute is always going to be False. There is a comment that StdOut/Err will not be captured. Is there a way around this?