def start(project): """ Starts the archive server on a daemon thread. """ port = _SERVER_PORT address = ('', port) server = HTTPServer(address, _RequestHandler) server.project = project def bg_task(): try: print 'Server started on port %s.' % port server.serve_forever() finally: server.server_close() bg_call_later(bg_task, daemon=True)
def start_schedule_forever(task): """ Asynchronously runs the specified task until it completes. This function is intended for testing, until a full scheduler class is written. """ def bg_task(): while True: def fg_task(): return (task.try_get_next_task_unit(), task.complete) (unit, task_complete) = fg_call_and_wait(fg_task) if unit is None: if task_complete: break else: sleep(_ROOT_TASK_POLL_INTERVAL) continue unit() # Run unit directly on this bg thread bg_call_later(bg_task, daemon=True)