Ответы пользователя по тегу Python
  • Нашел лишь одну книгу про создание веб-приложений с помощью Django Python, а существуют ли ещё книги?

    @skomoroh
    По django на русском видел 2 книги:
    Django - Подробное руководство, Адриан Головатый
    Django - Разработка веб-приложений на Python, Джефф Форсье

    По python лучше всего:
    вначале Изучаем Python, 4-е издание, Марк Лутц , потом Программирование на Python, 4-е издание, Марк Лутц

    Все есть на рутрекере
    Ответ написан
    Комментировать
  • Чем лучше парсить html?

    @skomoroh
    lxml
    Ответ написан
    Комментировать
  • Архитектурные вопросы по созданию API для асинхронного сервиса

    @skomoroh
    api на django+tastypie хорошо получаются

    в api 3 метода:
    1. поставить задачу - в ответ id задачи
    2. узнать статус задачи по id - в работе, ошибка, готово
    3. получить результат по id

    листенер:
    под каждый таск берет из редиски id ( инкремент )
    сразу кидает в очередь id+таск без разбора
    в редис пишет этому id статус "в работе"
    на все запросы статуса и перед забором результата берет статус из редиски
    если статус "готово", берет результат из базы ( или из файла )

    воркер первой ступени:
    берет таски из очереди,
    проверяет данные, если ошибочные( или баланс юзера и т.д. ) - пишет в редис статус "ошибка" с пояснением,
    разбивает на микро-таски, микро-таски кидает в новую очередь,
    в постгрю или редиску пишет инфу по связям тасков и микротасков ( task_id, sub_task_id, status, result )

    воркеры 2-й ступени:
    берут микро-таск из очереди
    выполняют
    кидают id+результат в очередь результатов

    воркер 3-й ступени:
    берет стопками результаты микро-тасков
    групирует их по таскам в постгре или редиске
    если все микро-таски готовы, пишет результат таска в постргрю или файл
    меняет статус таска на готово или ошибка( если результаты микро-тасков ошибка )

    время хранения результата задавать через ттл редиски
    Ответ написан
    Комментировать
  • Как на Python распарсить большой XML файл (>500Мб) содержаший ошибки?

    @skomoroh
    можно сначала представить что xml — это обычный текстовый и файл и привести структуру тегов в порядок функциями работы со строками, а уже потом открывать его как xml

    например можно заменить все html теги на «нетеги»
    sed -e 's/<p/\& lt;p/g' -e 's/<\/p/\& lt;\/p/g' file.xml > new.xml
    

    список всех html тегов гуглится

    можно предварительно сравнить количество открывающих и закрывающих тегов
    grep -o '<[^>]*>' file.xml |  cut -f 1 -d ' ' | sort | uniq -c
    
    Ответ написан
    1 комментарий
  • Пишем инструменты для электронной коммерции

    @skomoroh Автор вопроса
    Уже начал писать habrahabr.ru/post/146258/
    Ответ написан
    Комментировать
  • Выбор случайного значения

    @skomoroh
    import random
    import bisect
    
    # наш список
    l = list(range(12,50))
    
    # задаем веса, например: вес=70-позиция, можно любой
    lw = [(i, 70-i) for i in l]
    
    # суммируем веса
    tw = 0
    wd = dict()
    for i, w in lw:
        tw += w
        wd[tw] = i
    wk = sorted(wd.keys())     
    
    # получаем наше значение
    value = wd[wk[(bisect.bisect_right(wk, random.random()*tw))]]
    
    Ответ написан
    1 комментарий
  • pycurl.CurlMulti

    @skomoroh Автор вопроса
    Всем спасибо, проблему решил:
    1 cнес системный libcurl
    2 скачал исходник последнего курла с curl.haxx.se/download.html
    3 ./configure --enable-ares --with-ssl --enable-ipv6 --with-libidn
    make
    sudo checkinstall -D
    4 sudo pip install -U --force-reinstall pycurl
    Ответ написан
    Комментировать
  • подскажите базу под графы с весами

    @skomoroh Автор вопроса
    на постгре и сделал

    промежуточных расчетов нет, все уже посчитано нужно только выбрать

    ищу готовое специализированное решение
    Ответ написан