[SOLVED] Custom Scheduler Issues: Callbacks Not Completing the Cycle

   Views 310   Replies 1   Subscribers 1
User Avatar
Member
7 posts
Joined: Jan. 2010
Offline
Hello guys,

I'm currently developing a custom scheduler for our pipeline, based on the prtractor.py example, but I'm integrating it with our in-house tractor wrapper. I've run into some issues that I'm hoping someone might have insight into or help me understand where my errors/logic come from.

Current Setup

- Custom scheduler based on prtractor.py
- Not using onTick() to poll task updates (IT doesn’t want us to use polling via Tractor Query API to limit server overload)
- Removed the MQ server task (no feedback to Houdini session unfortunately) due to farm firewall. So only implemented the submitAsJob()
- Standard XMLRPC scheduler callbacks for reporting back to the main scheduling task

The Problem

The scheduler is partially working - all tasks dispatch correctly to Tractor and execute as expected. The individual tasks are properly reporting their status back to the main task cooking the TOP network via the standard XMLRPC callbacks.

However, despite successful task completion, the main scheduling task never reaches the onStopCook() callback (I can’t see PDG: STATUS NODE COOKED nor PDG: SCHEDULER STOP COOK in the log). This means the scheduler appears to hang in a perpetual "cooking" state, even though all the actual work is complete.

Has anyone experienced a similar issue with custom schedulers not fully completing their lifecycle?
Can we rely exclusively on the callback mechanism to report back to the scheduling task and terminate the job?

Any insights, suggestions for debugging approaches, or references to similar issues would be greatly appreciated!

Thanks in advance
Edited by akrilfx - March 24, 2025 11:00:57
User Avatar
Member
7 posts
Joined: Jan. 2010
Offline
After several troubleshooting attempts, I discovered that each individual Task needs to initialize its own keepalive thread to establish proper RPC communication with the server (this is part of pdgjobcmd.py). Once implemented, all Tasks were successfully able to communicate with the scheduling Tasks.
So the issue is solved on my end.
  • Quick Links