Some web applications periodically need to perform some sort of task (retrieve data from a remote location, perform data store cleanup, etc.). Sometimes these tasks would take too long for a regular request and the user should not have to wait until the task completes.