mirror of https://github.com/peter4431/rq.git
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
| #!/usr/bin/env python
 | |
| import optparse
 | |
| import logbook
 | |
| from logbook import handlers
 | |
| from rq import use_redis, Queue, Worker
 | |
| 
 | |
| 
 | |
| def parse_args():
 | |
|     parser = optparse.OptionParser()
 | |
|     parser.add_option('-b', '--burst', dest='burst',
 | |
|             action='store_true', default=False,
 | |
|             help='Run in burst mode (quit after all work is done).')
 | |
|     parser.add_option('-n', '--name', dest='name',
 | |
|             action='store', type='string', default=None,
 | |
|             help='Specify a different name.')
 | |
|     parser.add_option('-v', '--verbose', dest='verbose',
 | |
|             action='store_true', default=False,
 | |
|             help='Show more output.')
 | |
|     opts, args = parser.parse_args()
 | |
|     return (opts, args, parser)
 | |
| 
 | |
| 
 | |
| def format_colors(record, handler):
 | |
|     from rq.utils import make_colorizer
 | |
|     if record.level == logbook.WARNING:
 | |
|         colorize = make_colorizer('darkyellow')
 | |
|     elif record.level >= logbook.ERROR:
 | |
|         colorize = make_colorizer('darkred')
 | |
|     else:
 | |
|         colorize = lambda x: x
 | |
|     return '%s: %s' % (record.time.strftime('%H:%M:%S'), colorize(record.msg))
 | |
| 
 | |
| 
 | |
| def setup_loghandlers(opts):
 | |
|     if opts.verbose:
 | |
|         loglevel = logbook.DEBUG
 | |
|         formatter = None
 | |
|     else:
 | |
|         loglevel = logbook.INFO
 | |
|         formatter = format_colors
 | |
| 
 | |
|     import sys
 | |
|     handlers.NullHandler(bubble=False).push_application()
 | |
|     handler = handlers.StreamHandler(sys.stdout, level=loglevel, bubble=False)
 | |
|     if formatter:
 | |
|         handler.formatter = formatter
 | |
|     handler.push_application()
 | |
|     handler = handlers.StderrHandler(level=logbook.WARNING, bubble=False)
 | |
|     if formatter:
 | |
|         handler.formatter = formatter
 | |
|     handler.push_application()
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     opts, args, parser = parse_args()
 | |
| 
 | |
|     use_redis()
 | |
|     setup_loghandlers(opts)
 | |
| 
 | |
|     if len(args) == 0:
 | |
|         # Use the default queue
 | |
|         queues = [Queue()]
 | |
|     else:
 | |
|         queues = map(Queue, args)
 | |
| 
 | |
|     w = Worker(queues, name=opts.name)
 | |
|     w.work(burst=opts.burst)
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |