def download_scheduler():
    """Schedule packages from download queue for downloading."""
    log(format % ("-", "-", "SCHEDULEDER", "-", "Download Scheduler starting."))
    time.sleep(3)
    package_pool = ServerProxy("http://" + rpc_host + ":" + str(rpc_port))
    while True:
        if package_pool.get_conn_number() < max_parallel_downloads:
            # log(format%(str(package_pool.get_conn_number()), '-', 'CONN_AVAIL', '-', '-'))
            package = package_pool.get_popular()
            if package != "NULL" and package_pool.is_active(package) == False:
                # log(format%('-', '-', 'INACTIVE', '-', '-'))
                params = package_pool.get_details(package)
                if params != False:
                    package_pool.set_score(package, 0)
                    package_pool.add_conn(package)
                    log(format % (params[0], params[4], "SCHEDULED", params[5], "Package scheduled for download."))
                    forked = fork(download_from_source)
                    forked(params)
            if package_pool.is_active(package) == True:
                package_pool.set_score(package, 0)
        time.sleep(3)
    return