1. A system comprising: a computer processor; a computer readable storage medium having computer readable program code, the computer readable program code executable by the computer processor to cause the system to: select for execution a first task from a queue of tasks based, at least in part, on a first scheduled execution time of the first task, wherein the tasks are ordered in the queue according to scheduled execution times, wherein the first task is periodically scheduled for execution; determine whether the first task has one or more dependent tasks associated with the first task; in response to a determination that the first task has a dependent task, determine whether the dependent task has completed execution; in response to a determination that all dependent tasks associated with the first task have completed execution, execute the first task; in response to a determination that all dependent tasks associated with the first task have not completed execution, place the first task in a set of waiting tasks; after placement of the first task in the set of waiting tasks, place a first dependent task that has not completed execution and is not already in a set of unfinished dependent tasks in the set of unfinished dependent tasks, and establish a link between the first task and the first dependent task in the set of unfinished dependent tasks; and in response to a determination that the first task has been in the set of waiting tasks for an amount of time, determine that the first task is part of an improper loop dependency based, at least in part, on a subset of tasks being in the set of waiting tasks and the subset of tasks also being in the set of unfinished dependent tasks, wherein the subset of tasks includes the first task, and in response to a determination that the first task is part of the improper loop dependency, remove the subset of tasks from the set of waiting tasks and from the set of unfinished dependent tasks.