Python и SEO

Архив Март, 2011

Segmentation fault при использовании pycurl в Linux.

комментарии: 6

Написал клиенту простейший скрипт с использованием pycurl (я его всегда, кстати, использую), который состоит буквально из одного get-запроса, а при использовании этого скрипта под Linux, начала периодически валиться ошибка Segmentation fault и обрывать работу скрипта. Как выяснилось надо было вставить следующий кусочек кода, чтобы этого не происходило:

import sys
import pycurl

try:
   import signal
   from signal import SIGPIPE, SIG_IGN
   signal.signal(signal.SIGPIPE, signal.SIG_IGN)
except ImportError:
   pass

Пока не пробовал, но чтобы не забыть решил записать.

Автор: kalombo

Март 19th, 2011 at 3:32 пп

Категория: Python

Tagged with ,

Использование __setattr_.

комментарии: 4

Очень часто использую файл настроек для скрипта посредством модуля ConfigParser. И как-то немножко поднадоело писать в несколько строк каждый раз:

key = config.get("Basic","Key")
ns1 = config.get("Domains","NS1")
ns2 = config.get("Domains","NS2")

Короче, захотел я, чтобы доступ к настройкам выглядел примерно так: ns1 = config.Domains['ns1'], когда надо обратился к ней, вне зависимости от того, сколько настроек в файле. Самая хитрость — это сделать свойством класса секцию файла настроек. Именно для этого нужна функция __setattr__. Вот так у меня всё в итоге получилось:

class ConfigDict(object):
    def __init__(self,path):
        config = ConfigParser.RawConfigParser()
        config.read(path)
        for section in config.sections():
            dct = {}
            for option in config.options(section):
                dct[option] = config.get(section,option)
            self.__setattr__(section,dct)

Используется это вот так:

def main():
    conf = ConfigDict("settings.cfg")
    threads = conf.Basic['threads']
    ns1 = conf.Domains['ns1']
if __name__ == '__main__':
    main()

Ну и сам файл настроек settings.cfg:

[Basic]
THREADS = 1 ; потоки
[Domains]
NS1 = ns1.0adz.com

Автор: kalombo

Март 13th, 2011 at 5:48 пп

Категория: Python

Tagged with ConfigParser, setattr