Passing Variable(s) as kwargs

MRAB python at mrabarnett.plus.com
Mon Dec 6 12:23:42 EST 2010


On 06/12/2010 16:40, BJ Swope wrote:
> Hello All.
>
> I am trying to use values, retrieved from a config file, as kwargs and
> not having any luck.  Well at least I think that's what I'm trying to do ;)
>
> Any suggestions would be most appreciated.
>
> Here's the exception:
>
> Traceback (most recent call last):
>    File "c:\dev\LogServerMonitor\LogServerMonitor.py", line 246, in <module>
>      sched.add_cron_job(check_logging_db, minute =
> '*/run_interval_quantity')
>    File "c:\Python26\lib\site-packages\apscheduler\scheduler.py", line
> 249, in add_cron_job
>      second)
>    File "c:\Python26\lib\site-packages\apscheduler\triggers.py", line
> 22, in __init__
>      self._compile_expressions(minutes, 'minute')
>    File "c:\Python26\lib\site-packages\apscheduler\triggers.py", line
> 43, in _compile_expressions
>      compiled_expr_list = [compile_single(expr) for expr in expr_list]
>    File "c:\Python26\lib\site-packages\apscheduler\triggers.py", line
> 36, in compile_single
>      (expr, fieldname))
> ValueError: Unrecognized expression "*/run_interval_quantity" for field
> "minute"
>
>
>
> An example of what I am doing is:
> ######################################################################################
> Config File Contents:
> [RunInterval]
> #How often the application queries the DB to look for the date of
> #the last entry (Default every 1 Minute).
>
> #Valid RunInterval Quantities are integers > 0
> RunIntervalQuantity: 1
>
> #Valid RunInterval Types are S=Seconds, M=Minutes, H=Hours, D=Days
> RunIntervalType: M
>
> ##############################################################################################
>
> My Code
>
>
> config = ConfigParser.ConfigParser()
> try:
>      config.readfp(open(config_file))
> except:
>      sys.stderr.write('Config file, "%s", is missing or unreadable.
> Exiting.' % config_file)
>      sys.stderr.write('ERROR: %s\r\n' % str(err))
>      sys.exit(1)
>
>
> def getOption(section, option):
>      try:
>          opt_value = config.get(section, option)
>          return opt_value
>      except (ConfigParser.NoOptionError), err:
>          sys.stderr.write( "Application requires \"%s\" be defined in
> the [%s] section of the config file %s\r\n" % (option, section,
> config_file))
>          sys.stderr.write('ERROR: %s\r\n' % str(err))
>          sys.exit(1)
>
> def getOptionInt(section, option):
>      try:
>          opt_value = config.getint(section, option)
>          return opt_value
>      except (ValueError, ConfigParser.NoOptionError), err:
>          sys.stderr.write("Application requires \"%s\" be defined as an
> Integer in the \"[%s]\" section of the config file %s" % (option,
> section, config_file))
>          sys.stderr.write('ERROR: %s\r\n' % str(err))
>          sys.exit(1)
>
>
>
> # Start the scheduler
> sched = Scheduler()
> sched.start()
> run_interval_quantity = getOptionInt('RunInterval', 'RunIntervalQuantity')
> run_interval_type = getOption('RunInterval', 'RunIntervalType')
>
> if run_interval_type in ['S', 's']:
>      sched.add_cron_job(check_logging_db, second =
> '*/run_interval_quantity')
> elif run_interval_type in ['M', 'm']:
>      sched.add_cron_job(check_logging_db, minute =
> '*/run_interval_quantity')
> elif run_interval_type in ['H', 'h']:
>      sched.add_cron_job(check_logging_db, hour = '*/run_interval_quantity')
> elif run_interval_type in ['D', 'd']:
>      sched.add_cron_job(check_logging_db, day = '*/run_interval_quantity')
> else:
>      my_logger.warning('The value of RunIntervalType in the
> configuration file section RunInterval was not one of "S, M, H or D".
> Running LogServerMonitor application once per minute by default.')
>      sched.add_cron_job(check_logging_db, minute = '*')
>
It's complaining that the 'minute' argument which you're passing to
'add_cron_job' is '*/run_interval_quantity', which the scheduler
doesn't understand.



More information about the Python-list mailing list