Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Friday, September 27, 2013

python readline

# sudo aptitude install build-essential libreadline6-dev

#cd Python-..

# sed 's/#readline/readline/' Modules/Setup.dist > file.tmp && mv file.tmp Modules/Setup.dist

#./configure
#make
#make install

Friday, September 20, 2013

Nagios Indicator

Gnome indicator for nagios

It adds icon indicator to gnome panel.
This applet automatically check your nagios server and notify about all problems using popup messages.


https://github.com/volodymyrko/nagios_indicator

Wednesday, March 13, 2013

Запуск django/flask аплікацій за допомгою supervisord

Існує декілька варіантів запуску django як fastcgi-серверу на продакшин-серверах. Типовим варіантом є написання startup-скрпту і розміщення його в /etc/init.d/ (детальніше https://code.djangoproject.com/wiki/InitdScriptForLinux).

Доволі зручним для запуску і контролю над django-програмами є supervisord. Supervisord дозволяє користувачам здійснювати моніторинг і контроль ряд процесів в UNIX-таких операційних систем. Його можна використовувати для запуску та конторлю різноманітних сервісів, зокрема django, celery, tornado, flask

Встанолюємо (на debain) supervisord:

aptitude install supervisor

supervisor напсианий на python-і, тому його можна і встановлювати за допомгою easy_install, pip ... Але якщо у вас немає потреб встановлювати певно кокретної версії, то краще скористатися штатним пакетним менеджером (aptitude, apt-get в debian-і)


конфігураціїні файли supervisor-а знаходяться в директорії /etc/supervisor:
/etc/supervisor/supervisord.conf - конф. файл самого supervisor-а,
а файли з лписом наших сервісів (зокрема django), які ми будемо запускати, повинні знаходитися в /etc/supervisor/conf.d/

ось, як виглядає конфігураційний файл (/etc/supervisor/conf.d/project.conf) для запуску django :


[program:project]  # тут project - це унікальне імє проекту
command = /home/user/www/project/.env/bin/python manage.py runfcgi host=127.0.0.1 port=10889 daemonize=false
directory = /home/user/www/project/
user = user
autostart=true
autorestart=true
startsecs = 3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/project.log


отже створили файл, далі запускаємо:

supervisorctl reread
supervisorctl update

і дивимося статус:

supervisorctl status
project RUNNING pid 2637, uptime 0:25:13


і ще приклад для flask-аплікації, яка запускається за допомогою gunicorn

[program:flask_app]
command = /home/user/flask/flask_app/.env/bin/gunicorn flask_app:app -b 127.0.0.1:10081
directory = /home/user/flask/flask_app/
user = user
autostart=true
autorestart=true
startsecs = 3
redirect_stderr=true
stdout_logfile=/var/log/supervisor/flask_app.gunicorn.log


Tuesday, November 1, 2011

how to: python mongodb map-reduce

it's simple example how-to use map-reduce in mongo with python script
use:

  • python3
  • pymongo3 library





import pymongo
from datetime import datetime, timedelta
from  pymongo.code import Code
MAP_FUNCTION = Code("function () { emit(this.player, { count:1, score:this.score} ); }")
REDUCE_FUNCTION = Code("function (key, values) {var result = {count:0, score:0}; values.forEach(function (value) {result.count += value.count; result.score += value.score;}); return result; }")
dbhost=""
dbport=27017
mongodb = pymongo.Connection(dbhost, dbport)
db = mongodb.
age=10 
query={'last_visited': {'$gte': datetime.utcnow()-timedelta(age)}}
result = db..map_reduce(map=MAP_FUNCTION, reduce=REDUCE_FUNCTION, out="output", query=query)
for item in result.find():
    player = item["_id"]
    score = item["value"]['score']
    print(player, score)