def main(args):
import multiprocessing
try:
multiprocessing.set_start_method("fork")
except RuntimeError as ex:
log.warn("multiprocessing.set_start_method: " + str(ex))
if not args.command:
# No command was given.
args.app.arg_parser.print_help()
return 1
# In the case fileConfig undid the command line, which has precedence.
args.applyLoggingOpts(args.log_levels, args.log_files)
if args.db_url:
args.config.set(MAIN_SECT, SA_KEY, args.db_url)
# Don't want commands and such to use this, so reset.
args.db_url = None
elif "MISHMASH_DBURL" in os.environ:
log.verbose("Using environment MISHMASH_DBURL over configuration: {}"
.format(os.environ["MISHMASH_DBURL"]))
args.config.set(MAIN_SECT, SA_KEY, os.environ["MISHMASH_DBURL"])
try:
# Run command
retval = args.command_func(args, args.config) or 0
except (KeyboardInterrupt, PromptExit) as ex:
# PromptExit raised when CTRL+D during prompt, or prompts disabled
retval = 0
except (sql_exceptions.ArgumentError,
sql_exceptions.OperationalError) as ex:
_pErr("Database error")
retval = 1
except Exception as ex:
log.exception(ex)
_pErr("General error")
retval = 2
return retval
评论列表
文章目录