← All posts tagged Python

Что за норкоманы делали itertools.groupby ? Какого хрена эта ф-ция не умеет работать с несортированными массивами? Похоже, у автора однострочник не получался, поэтому он решил покласть на удобство использования.

Заменю кодом с rpc шелловский скрипт( http://b.leppoc.net/2011/07/20/supervisor-rolling-restart/ ) для rolling restart процессов под supervisor'ом:

import xmlrpclib
from time import sleep
host = 'localhost'
delay = 0.5
server = xmlrpclib.Server('http://%s:9001/RPC2' % host)
server.supervisor.getState()
for p in server.supervisor.getAllProcessInfo():
    server.supervisor.stopProcess(p['group'] + ':' + p['name'])
    print p['group'] + ':' + p['name'] + ' has been stopped'
    server.supervisor.startProcess(p['group'] + ':' + p['name'])
    print p['group'] + ':' + p['name'] + ' has been restarted'
    sleep(delay)

В доке по supervisor xml-rpc почему-то пропустили stopProcess

Повыбирав между uwsgi-emperor и supervisor решил остановиться на втором, ибо в первом лень настраивать cgroups для лимитирования процессов по ресурсам. А так — одна фигня плюс-минус.

Поговорил с рубистами о питоне, послушал претензии. Практически те же самые, что и у питонистов к руби. И такая же непримиримость. Очень весело, хотя казалось бы.

А что, в питоне такие кастрированные контексты? По сути ни для чего, кроме как для файлов(и им подобного), не подходят. Очень угнетает невозможность отказаться от выполнения блока, лежащего под with. Ничего нагуглить не смог.

И ошибка из #1565386 возникает при неверном использовании widget-ов и layout-ов. В моём случае оказалось, что делается addWidget(layout), что биндинг не переносит вот с такой ошибкой. Тьфу, блин. А я уж разволновался.

А как можно в декораторе отличить функцию от метода?
Ниже пример, как оно не работает. А хочется найти рабочий вариант.
>> import inspect
>> def myfunc(f):
... if inspect.ismethod(f):
... print 'Method found'
... else:
... print 'Func found'
... return f
...
>> @myfunc... def asd():
... return 11
...
Func found
>> class MyClass(object):... @myfunc
... def asdasdasd(self):
... return 12
...
Func found
>>