old_contents: import sys
  from optparse import make_option
  import traceback
  
  from django.core.management.base import BaseCommand
  from django.conf import settings
  from django_cron import CronJobManager
  from django.db import close_connection
  
  
  DEFAULT_LOCK_TIME = 24 * 60 * 60  # 24 hours
  
  
  def get_class(kls):
      """
      TODO: move to django-common app.
      Converts a string to a class.
      Courtesy: http://stackoverflow.com/questions/452969/does-python-have-an-equivalent-to-java-class-forname/452981#452981
      """
      parts = kls.split('.')
      module = ".".join(parts[:-1])
      m = __import__(module)
      for comp in parts[1:]:
          m = getattr(m, comp)
      return m
  
  
  class Command(BaseCommand):
      option_list = BaseCommand.option_list + (
          make_option('--force', action='store_true', help='Force cron runs'),
          make_option('--silent', action='store_true', help='Do not push any message on console'),
      )
  
      def handle(self, *args, **options):
          """
          Iterates over all the CRON_CLASSES (or if passed in as a commandline argument)
          and runs them.
          """
          if args:
              cron_class_names = args
          else:
              cron_class_names = getattr(settings, 'CRON_CLASSES', [])
  
          try:
              crons_to_run = map(lambda x: get_class(x), cron_class_names)
          except:
              error = traceback.format_exc()
              print('Make sure these are valid cron class names: %s\n%s' % (cron_class_names, error))
              sys.exit()
  
          for cron_class in crons_to_run:
              run_cron_with_cache_check(cron_class, force=options['force'],
                  silent=options['silent'])
          close_connection()
  
  
  def run_cron_with_cache_check(cron_class, force=False, silent=False):
      """
      Checks the cache and runs the cron or not.
  
      @cron_class - cron class to run.
      @force      - run job even if not scheduled
      @silent     - suppress notifications
      """
      lock_class = get_lock_class()
  
      with lock_class(cron_class, silent) as lock:
          if lock.success:
              try:
                  instance = cron_class()
                  CronJobManager.run(instance, force, silent)
              except:
                  error = traceback.format_exc()
                  print('Error running cron job %s, got exception:\n%s' % (cron_class.__name__, error))
  
  def get_lock_class():
      dafault_name = 'django_cron.backends.lock.cache.CacheLock'
      name = getattr(settings, 'DJANGO_CRON_LOCK_BACKEND', dafault_name)
      return get_class(name)
  
new_contents: import sys
  from optparse import make_option
  import traceback
  
  from django.core.management.base import BaseCommand
  from django.conf import settings
  from django_cron import CronJobManager, get_class
  from django.db import close_connection
  
  
  DEFAULT_LOCK_TIME = 24 * 60 * 60  # 24 hours
  
  
  
  class Command(BaseCommand):
      option_list = BaseCommand.option_list + (
          make_option('--force', action='store_true', help='Force cron runs'),
          make_option('--silent', action='store_true', help='Do not push any message on console'),
      )
  
      def handle(self, *args, **options):
          """
          Iterates over all the CRON_CLASSES (or if passed in as a commandline argument)
          and runs them.
          """
          if args:
              cron_class_names = args
          else:
              cron_class_names = getattr(settings, 'CRON_CLASSES', [])
  
          try:
              crons_to_run = map(lambda x: get_class(x), cron_class_names)
          except:
              error = traceback.format_exc()
              print('Make sure these are valid cron class names: %s\n%s' % (cron_class_names, error))
              sys.exit()
  
          for cron_class in crons_to_run:
              run_cron_with_cache_check(cron_class, force=options['force'],
                  silent=options['silent'])
          close_connection()
  
  
  def run_cron_with_cache_check(cron_class, force=False, silent=False):
      """
      Checks the cache and runs the cron or not.
  
      @cron_class - cron class to run.
      @force      - run job even if not scheduled
      @silent     - suppress notifications
      """
  
      with CronJobManager(cron_class, silent) as manager:
          manager.run(force)
  
  
subject: use CronJobManage as a context manager at runcrons management command