# On service start. 1. Read the job definitions file and populate the database. 2. From the job definition, create a list of tasks to execute. 3. From time to time (?) clean the db. # On configuration changes : - Find and tombstone the JobDefinitions that are not useful anymore. - Cascade delete the child tasks that are planned. Tombstone them as wel. # On worker demand : - Find the tasks for which : - last_check is not defined - OR last_check + max_timedelta > datetime.now() - AND selected_by not defined. - Mark these tasks as selected by the current worker, on the current date. # From time to time: - Check for stalled tasks (datetime.now() - selected_at) > MAX_WORKER_TIME. Remove the lock. # On the worker side Hey, I'm XX, give me some work. OK, this is done, here are the results for Task: response.