def wait_for_idle(self, timeout=None): if "--processes" in self.cmdline: print( "Warning: wait_for_idle() doesn't support multiprocess workers yet" ) return False if self.agent: print("Warning: wait_for_idle() doesn't support agent yet") return False if self.process.returncode is not None: return True try: wait_for_net_service("127.0.0.1", self.admin_port, poll_interval=0.01, timeout=timeout) f = urllib.request.urlopen("http://127.0.0.1:%s/wait_for_idle" % self.admin_port) data = f.read().decode('utf-8') assert data == "idle" return True except Exception as e: print("Couldn't wait_for_idle: %s" % e) return False
def get_report(self, with_memory=False): wait_for_net_service("127.0.0.1", 20020, poll_interval=0.01) f = urllib.request.urlopen("http://127.0.0.1:20020/report%s" % ("_mem" if with_memory else "")) data = json.loads(f.read().decode('utf-8')) f.close() return data
def start(self, cmdline=None, env=None, expected_children=0): self.stopped = False self.process_children = [] if not cmdline: cmdline = self.cmdline if env is None: env = {} # Kept from parent env for env_key in ["PATH", "GEVENT_LOOP", "VIRTUAL_ENV"]: if os.environ.get(env_key) and not env.get(env_key): env[env_key] = os.environ.get(env_key) if self.quiet: stdout = open(os.devnull, 'w') else: stdout = None self.cmdline = cmdline # print cmdline self.process = subprocess.Popen(re.split( r"\s+", cmdline) if isinstance(cmdline, basestring) else cmdline, shell=False, close_fds=True, env=env, cwd=os.getcwd(), stdout=stdout) if self.quiet: stdout.close() # Wait for children to start if expected_children > 0: psutil_process = psutil.Process(self.process.pid) while True: self.process_children = psutil_process.children(recursive=True) # print("Expecting %s children of pid %s, got %s" % ( # expected_children, self.process.pid, len(self.process_children)) # ) if len(self.process_children) >= expected_children: break time.sleep(0.1) if self.wait_port: wait_for_net_service("127.0.0.1", int(self.wait_port), poll_interval=0.01) self.started = True
def start(self, cmdline=None, env=None, expected_children=0): self.stopped = False self.process_children = [] if not cmdline: cmdline = self.cmdline if env is None: env = {} # Kept from parent env for env_key in ["PATH", "GEVENT_LOOP", "VIRTUAL_ENV"]: if os.environ.get(env_key) and not env.get(env_key): env[env_key] = os.environ.get(env_key) if self.quiet: stdout = open(os.devnull, 'w') else: stdout = None self.cmdline = cmdline # print cmdline self.process = subprocess.Popen(re.split(r"\s+", cmdline) if type(cmdline) in [str, unicode] else cmdline, shell=False, close_fds=True, env=env, cwd=os.getcwd(), stdout=stdout) if self.quiet: stdout.close() # Wait for children to start if expected_children > 0: psutil_process = psutil.Process(self.process.pid) # print "Expecting %s children, got %s" % (expected_children, # psutil_process.get_children(recursive=False)) while True: self.process_children = psutil_process.get_children( recursive=True) if len(self.process_children) >= expected_children: break time.sleep(0.1) if self.wait_port: wait_for_net_service("127.0.0.1", int(self.wait_port), poll_interval=0.01)
def get_report(self): wait_for_net_service("127.0.0.1", 20020) f = urllib2.urlopen("http://127.0.0.1:20020") data = json.load(f) f.close() return data
def get_report(self, with_memory=False): wait_for_net_service("127.0.0.1", 20020, poll_interval=0.01) f = urllib2.urlopen("http://127.0.0.1:20020/report%s" % ("_mem" if with_memory else "")) data = json.load(f) f.close() return data
def get_report(self): wait_for_net_service("127.0.0.1", 20020, poll_interval=0.01) f = urllib2.urlopen("http://127.0.0.1:20020") data = json.load(f) f.close() return data