command_manager

Entry point for Python scripts


License
BSD-3-Clause
Install
pip install command_manager==1.2.0

Documentation

command_manager

Entry point for Python scripts. Helps you structure additional scripts of your application within one or more Python packages and call them from one place.

Installation

Install using pip...

pip install command_manager

Using

Create a Python package anywhere in your application.

For example, the package commands and the entry point manager.py

.
├── commands
│   ├── __init__.py
│   └── my_first_command.py
├── src
└── manager.py

In manage.py add the following:

if __name__ == '__main__':
    import logging.config # Optional for logging
    from command_manager import Manager

    LOGGING = { # Optional for logging
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'verbose': {
                'format': '%(levelname)s | %(asctime)s | %(module)s | %(message)s'
            }
        },
        'handlers': {
            'commands_handler': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'formatter': 'verbose',
                'filename': os.path.join("logs", 'commands.log'),
                'maxBytes': 100000,
                'backupCount': 10,
            }
        },
        'loggers': {
            'commands.my_first_command': {
                'handlers': ['commands_handler'],
                'level': 'INFO',
                'propagate': False
            }
        },
    }

    logging.config.dictConfig(LOGGING) # Optional for logging
    manager = Manager(["commands"])
    manager.run()

In my_first_command.py add the following:

from command_manager.commands import BaseCommand


class Command(BaseCommand):

    description = "Simple command"

    def add_arguments(self, parser):
        parser.add_argument("--arg1", help="argument arg1")
        parser.add_argument("--arg2", help="argument arg2")

    def handle(self, *args, **kwargs):
        self.logger.info("START")
        print "Hello Word: arg1={arg1} arg2={arg2}".format(**kwargs)
        self.logger.info("END")

Warning: The class must be called the Command and inherited from BaseCommand

Now call manage.py from the console.
python manage.py

Call our command my_first_command.py python manage.py my_first_command