1. A computer implemented method for scheduling a new task, the method comprising: receiving task data in respect of the new task, the task data comprising at least information enabling the new task to be uniquely identified and a target runtime for the new task; recording the received task data in a data structure; determining whether a job configured to execute tasks out of the data structure has already been registered with an underlying job scheduler; in response to determining that the job has not already been registered with the underlying job scheduler, registering the job with the underlying job scheduler for execution at or about the target runtime of the new task; in response to determining that the job has already been registered with the underlying job scheduler: determining whether the target runtime for the new task is before an existing runtime for the job, in response to determining that the target runtime for the new task is before an existing runtime for the job, updating the existing runtime for the job within the underlying task scheduler to be at or about the target runtime of the new task, in response to determining that the target runtime for the new task is not before the existing runtime for the job, maintaining the existing runtime for the job; wherein, when the job is executed by the underlying job schedule, the job identifies within the data structure one or more tasks which have a runtime that is at or before a current time, causes the one or more tasks to be executed, and in response to a determination that at least one pending task still remains within the data structure re-registers with the underlying job scheduler with a runtime that is at or about an earliest runtime of pending tasks within the data structure.