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