Git Product home page Git Product logo

django-mmc's Introduction

Django-mmc

Build Status Code Health Python 2.6, 2.7, 3.4 Current version on PyPi Downloads from PyPi License

What's that

App for monitoring management commands on Django.

Quick installation

  1. Using pip:
$  pip install django-mmc
  1. Add mmc application to INSTALLED_APPS in your settings file
  2. Inject management classes before apps will be loaded
from mmc.mixins import inject_management

inject_management()
  1. Sync database (./manage.py syncdb or ./manage.py migrate)
  2. Enjoy

Demo installation

Docker

$ git clone --depth 1 -b master https://github.com/LPgenerator/django-mmc.git mmc
$ cd mmc
$ docker build -t mmc .
$ docker run -it -d -p 8000:8000 --name mmc mmc
$ docker exec -i -t mmc /bin/bash
$ cd /mmc_demo/

Vagrant

$ git clone --depth 1 -b master https://github.com/LPgenerator/django-mmc.git mmc
$ cd mmc
$ vagrant up --provider virtualbox
$ vagrant ssh
$ cd /mmc_demo/

OS X/Linux

$ sudo apt-get install -y virtualenvwrapper || brew install pyenv-virtualenvwrapper
$ source /usr/share/virtualenvwrapper/virtualenvwrapper.sh || source /usr/local/bin/virtualenvwrapper.sh
$ mkvirtualenv django-mmc
$ git clone --depth 1 https://github.com/LPgenerator/django-mmc.git
$ cd django-mmc
$ python setup.py develop
$ cd demo
$ pip install -r ../requirements/dev.txt
$ python manage.py syncdb --noinput
$ python manage.py createsuperuser --username admin --email [email protected]
$ python manage.py test_command >& /dev/null
$ python manage.py test_command_noargs >& /dev/null
$ python manage.py test_command_error >& /dev/null
$ python manage.py test_command_killed >& /dev/null
$ python manage.py runserver >& /dev/null &

Open app in browser (login and password is admin/admin):

$ xdg-open http://127.0.0.1:8000/admin/mmc/mmclog/ >& /dev/null || open http://127.0.0.1:8000/admin/mmc/mmclog/ >& /dev/null

Configuration

  1. Execute the command, and script will be available at http://127.0.0.1:8000/admin/mmc/mmcscript/
  2. Configure script options on script settings http://127.0.0.1:8000/admin/mmc/mmcscript/1/
  3. Add email addresses for errors notification http://127.0.0.1:8000/admin/mmc/mmcemail/
  4. All logs available on Logs page http://127.0.0.1:8000/admin/mmc/mmclog/
  5. If you are using sentry, configure sentry, and all errors will be send into sentry too

Usage without inject

If you want track only specified commands manually without auto-inject, follow to examples below:

# args
from mmc.mixins import BaseCommand


class Command(BaseCommand):
    def handle(self, *args, **options):
        print "OK"


# noargs
from mmc.mixins import NoArgsCommand


class Command(NoArgsCommand):
    def handle_noargs(self, *args, **options):
        print "OK"

When you are using auto-inject, you can use ignore flag on Scripts/Hosts settings. Logs about execution not be stored, but if you got any error on your commands, you will be notified to emails.

Cron debug

For debug any messages or some errors on app, run commands with example below:

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
MAILTO=root@localhost
PYTHON_BIN=/home/user/example.com/venv/bin/python
MANAGE_PY=/home/user/example.com/www/manage.py
LOG_FILE=/var/log/mmc.cron.log

# Project commands
50 2 * * * $PYTHON_BIN $MANAGE_PY clean >> $LOG_FILE 2>&1

Multi-instance lock

If you are using "One copy" functionality, and command is run on multiple servers, you can use Memcached/Redis lock. Just configure it on settings.py:

MMC_LOCK_TYPE = 'MemcacheLock'

MMC_MEMCACHED_CONFIG = {
    'servers': ['127.0.0.1:11211'], 'debug': 0
}

Management commands

mmc_cleanup - clean logs by days/date

mmc_notify - notify users, when script is killed by OS (that actual for long tasks and for big databases). For detailed check (by pid and name) you can install psutil.

Sentry support

If you want receive notifications and detailed traceback to Sentry, you can install raven, and configure project dsn settings.

Publications

Screenshots

/screenshots/log_changelist.jpg

/screenshots/log_edit.jpg

/screenshots/script_changelist.jpg

/screenshots/script_edit.jpg

/screenshots/email_changelist.jpg

/screenshots/email_edit.jpg

/screenshots/hosts_changelist.jpg

Compatibility:

  • Python: 2.6, 2.7, 3.4, 3.5, pypy, pypy3
  • Django: 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9

django-mmc's People

Contributors

benjaminrigaud avatar deniskabalkin avatar diknuken avatar gotlium avatar jayvdb avatar mbartz avatar retailify avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.