" […] so the current solution is just to have the Python code wait 60 seconds before sending the saveGraphic message. […]"
as 1) a command is assembled, 2) Python broadcasts this command to an other part of Avogadro, 3) Python assumes 60 seconds are probably enough for the task to be completed, to 4) continue with other work (e.g., saveGraphic).
If so, Python’s module subprocess (part of the standard library) has an optional flag check=True. Could this be used to collect the exit signal of task renderOrbital as “task has been completed” which might happen earlier, or later than the fix threshold of a minute? I apologize for not providing a MWE, this comment only is conceptual.