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())) try: # Instantiate a worker worker_class = import_attribute(options['worker_class']) queues = get_queues(*options.get('queues'), queue_class=import_attribute( options['queue_class'])) w = worker_class(queues, connection=queues[0].connection, name=options['name'], exception_handlers=get_exception_handlers() or None, default_worker_ttl=options['worker_ttl']) # Call use_connection to push the redis connection into LocalStack # without this, jobs using RQ's get_current_job() will fail use_connection(w.connection) w.work(burst=options.get('burst', False)) except ConnectionError as e: print(e) sys.exit(1)
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())) try: # Instantiate a worker worker_class = import_attribute(options['worker_class']) queues = get_queues(*args, queue_class=import_attribute(options['queue_class'])) w = worker_class( queues, connection=queues[0].connection, name=options['name'], exception_handlers=get_exception_handlers() or None, default_worker_ttl=options['worker_ttl'] ) # Call use_connection to push the redis connection into LocalStack # without this, jobs using RQ's get_current_job() will fail use_connection(w.connection) w.work(burst=options.get('burst', False)) except ConnectionError as e: print(e) sys.exit(1)
def get_simple_worker(*queue_names): """ Returns a RQ worker for all queues or specified ones. """ queues = get_queues(*queue_names) return SimpleWorker(queues, connection=queues[0].connection, exception_handlers=get_exception_handlers() or None)
def create_worker(self, *args, **options): try: # Instantiate a worker worker_class = import_attribute(options['worker_class']) queues = get_queues(*args, queue_class=import_attribute(options['queue_class'])) w = worker_class( queues, connection=queues[0].connection, name=options['name'], exception_handlers=get_exception_handlers() or None, default_worker_ttl=options['worker_ttl'] ) # Call use_connection to push the redis connection into LocalStack # without this, jobs using RQ's get_current_job() will fail use_connection(w.connection) w.work(burst=options.get('burst', False)) except ConnectionError as e: print(e)
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())) sentry_dsn = options.get('sentry-dsn') try: # Instantiate a worker worker_class = import_attribute(options['worker_class']) queues = get_queues(*args, queue_class=import_attribute( options['queue_class'])) w = worker_class(queues, connection=queues[0].connection, name=options['name'], exception_handlers=get_exception_handlers() or None, default_worker_ttl=options['worker_ttl']) # Call use_connection to push the redis connection into LocalStack # without this, jobs using RQ's get_current_job() will fail use_connection(w.connection) # Close any opened DB connection before any fork reset_db_connections() if sentry_dsn: try: from raven import Client from raven.transport.http import HTTPTransport from rq.contrib.sentry import register_sentry client = Client(sentry_dsn, transport=HTTPTransport) register_sentry(client, w) except ImportError: self.stdout.write( self.style.ERROR( "Please install sentry. For example `pip install raven`" )) sys.exit(1) w.work(burst=options.get('burst', False)) except ConnectionError as e: print(e) sys.exit(1)
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())) try: # Instantiate a worker worker_class = import_attribute(options.get('worker_class', 'rq.Worker')) queues = get_queues(*args) w = worker_class( queues, connection=queues[0].connection, name=options['name'], exception_handlers=get_exception_handlers() or None, default_worker_ttl=options['worker_ttl'], ) # Call use_connection to push the redis connection into LocalStack # without this, jobs using RQ's get_current_job() will fail use_connection(w.connection) # Retry if worker already exists. while 1: try: w.work(burst=options.get('burst', False)) break except ValueError as err: if options.get('retry', False) and 'exists an active worker' in str(err): msg = 'RQ worker already exists, retrying in 60 seconds' w.log.warning(msg) time.sleep(60) else: raise except ConnectionError as e: print(e)