def handle(self, *args, **options): pid = options.get('pid') if pid: with open(os.path.expanduser(pid), "w") as fp: fp.write(str(os.getpid())) if os.environ.get('RUN_MAIN') == 'true': try: self.create_worker(*args, **options) except KeyboardInterrupt: pass elif os.environ.get('RUN_RELOADER') == 'true': try: reloader_thread() except KeyboardInterrupt: pass else: num_workers = options['num_workers'] if not num_workers: num_workers = int(os.environ.get('RQ_CONCURRENCY', 1)) workers = [] # need the number of workers - 1 because our main process will create one for _ in range(num_workers - 1): workers.append(self.create_worker_process()) if options['autoreload']: workers.append(self.create_worker_process()) self.create_reloader(workers) else: self.create_worker(*args, **options)
def run_tests(self): auto_reload = False if '-a' in sys.argv or '--autoreload' in sys.argv: auto_reload = True if auto_reload: from django.utils.autoreload import restart_with_reloader, reloader_thread if os.environ.get("RUN_MAIN") == "true": try: TestCommand.run_tests(self) except LabelException: sys.exit(1) except: pass try: reloader_thread() except KeyboardInterrupt: pass else: try: sys.exit(restart_with_reloader()) except KeyboardInterrupt: pass else: return TestCommand.run_tests(self)
def autoreload(self): """Copied from django.core.autoload.python_reloader""" if os.environ.get("RUN_MAIN") == "true": thread.start_new_thread(self.inner_run, ()) # start http server try: #sys.stdout.write("Starting reloader_thread...\n") reloader_thread() # poll source files for modifications # if modified, kill self except KeyboardInterrupt: pass else: try: exit_code = self.restart_with_reloader() if exit_code < 0: os.kill(os.getpid(), -exit_code) else: sys.exit(exit_code) except KeyboardInterrupt: pass