Archív

Příspěvek oštítkován ‘python’

Instalace Gentoo web serveru

27.05.2009 admin Bez komentářů

Příspěvek obsahuje moje poznámky ke zprovoznění gentoo webserveru.

Instalace MySQL

cd /etc/init.d/
./mysql start

Číst více …

Tags: ,

Trac API nezavírá souborovou konexi

22.04.2009 admin Bez komentářů

Sorry, this entry is only available in English

Tags:

Unicode support for Python’s logging library

03.02.2009 admin Bez komentářů
class MyFormatter(logging.Formatter):
  def __init__(self, fmt=None, datefmt=None, encoding='windows-1250'):
    logging.Formatter.__init__(self, fmt, datefmt)
    self.encoding = encoding
 
  def formatException(self, ei):
    r = logging.Formatter.formatException(self, ei)
    if type(r) in [types.StringType]:
      r = r.decode('windows-1250', 'replace') # Convert to unicode
    return r
 
  def format(self, record):
    t = logging.Formatter.format(self, record)
    if type(t) in [types.UnicodeType]:
      t = t.encode(self.encoding, 'replace')
    return t
 
 
def prepareFileAndConsoleLogging(soubor, urovenSoubor=None, urovenKonzole=None):
  # http://docs.python.org/library/logging.html
  global logging, libLogger
 
  if urovenSoubor == None:
    urovenSoubor = logging.DEBUG
  if urovenKonzole == None:
    urovenKonzole = logging.INFO
 
  #logging.basicConfig(level=urovenSoubor)
 
  # Soubor
  fileH = logging.FileHandler(soubor, 'a')
  fileH.setLevel(urovenSoubor)
  formatterF = MyFormatter(
    fmt='%(asctime)s|%(levelname)-8s|%(name)s|%(message)s|%(filename)s|%(funcName)s|%(lineno)d',
    encoding='windows-1250')
  fileH.setFormatter(formatterF)
  logging.getLogger('').addHandler(fileH)
  logging.getLogger('').setLevel(urovenSoubor)
 
  # Konzole
  console = logging.StreamHandler()
  console.setLevel(urovenKonzole)
  formatter = MyFormatter(
    fmt='%(name)s: %(message)s',
    encoding='cp852')
  console.setFormatter(formatter)
  logging.getLogger('').addHandler(console)
 
  libLogger.info(u'UNICODE: Logování inicializováno (diakritika: ščřžýáíé)')
  libLogger.info('STRING: Logování inicializováno (diakritika: ščřžýáíé)')
  libLogger.debug(u'Debug')
Tags:

mBank API - programové rozhraní v Pythonu pro českou mBank

28.02.2008 admin Bez komentářů

Příklad přístupu do mBank pomocí modulu (knihovny) pro Python:

m = MBanka('781374', 'kladiVo274')
print "Ucty:"
for account in m.getAccountsList():
	print "\t", account
m.selectAccount('mKONTO')
m.readTemplates()
print u"Sablony:"
for template in m.getTemplatesList():
	print "[%s]" % template.name
r = m.pay('TONDA', 1, 'Zaplacena 1Kc')
print "Vysledek: %s" % r

Dotazy prosím do diskuze. API bude ke stažení cca do týdne.

Tags:

Chyba z klientské aplikace: "Address already in use"

16.08.2007 admin Bez komentářů

Při psaní skriptíku na generování zátěže na HTTP se mi po pár minutách začala vracet chyba “Address already in use”. Tento problém je hezky popsán zde i s perfektními skripty na odzkoušení (bohužel bez řešení).

Klient

import socket
 
for i in range(50000):
        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(('localhost',9000))
        s.send("bla")
        s.close()
        if i %100==0:
                print i

Server

import socket as s
import sys
 
serv=s.socket(s.AF_INET, s.SOCK_STREAM)
serv.bind(('',9000))
serv.listen(5)
 
while True:
        (c,l) = serv.accept()
        while True:
                data=c.recv(9000)
                if data:
                        print data,
                else:
                        break
        sys.stdout.flush()
        c.close()

Řešením je vytvoření a zvýšení MaxUserPort dle návodu zde a vytvoření a snížení TcpTimedWaitDelay zde.

Tags: