Ответы пользователя по тегу Python
  • AQMP и чтение состояние очереди

    stepank
    @stepank
    У разных клиентов API немного отличается, но по сути лишь именами функций. Например, в amqp есть такой метод. В описании указано следующее:

    Returns a tuple containing 3 items:
    the name of the queue (essential for automatically-named queues)
    message count
    consumer count

    Второй элемент возвращаемого тупла - количество записей.

    Другой более суровый вариант - подписываться на очередь и, если по истечении некоторого времени (например, 10 сек) сообщений не пришло, скорее всего, в очереди просто ничего нет.
    Ответ написан
  • Как обновить библиотеку ZLIB для Python?

    stepank
    @stepank
    zlib в Питоне - это байндинги к библиотеке zlib. Можно попробовать обновить библиотеку и пересобрать питон.
    Ответ написан
    Комментировать
  • Как реализовать цепочку callback'ов в python?

    stepank
    @stepank

    в питоне в качестве анонимных функций есть только lamba, на которые есть очень жесткие ограничения, например, что их тело может содержать только одно выражение, т.е. простым языком - внутри лямбды не может быть очень много логики. поэтому для более сложных конструкций нужно создавать именованые функции, например:

    some = "hello"
    def func_1():
        print some
        one_more = "world"
        def func_2():
            print some, one_more
            def func_3():
                print "hello world"
            return func_99("bla-bla", func_3)
        return func_100("bla-bla", func_2)

    есть различные варианты, как избежать большой вложенности, но это непосредственно к теме вопроса не относится. кроме того, если вы работаете с Twisted, то, конечно, нужно изучить Deferred, т.к. без них в этом фреймворке вообще никуда. насчет Tornado не знаю, вероятно, там есть какой-то похожий механизм. если вы не используете ни один из указанных фреймворков, то саму концепцию Deferred все равно есть смысл изучить, т.к. есть реализации не привязанные к этим фреймворкам, но с помощью Deferred работа с цепочками колбеков становится гораздо удобнее

    Ответ написан
    Комментировать
  • Тестирование сетевых приложений на Python

    stepank
    @stepank
    1. можно поднять веб-сервер в отдельном потоке или процессе, этот веб-сервер может эмулировать работу сайта. конкретных вариантов, как это сделать, очень много: threading, multiprocessing, использование библиотек типа gevent или twisted

    2. есть море программ, которые позволяют сделать «копию» сайта. самый простой вариант — наверное, wget, он можно вытянуть едва ли не весь сайт одной командой, умеет ходить по ссылкам. дальше поднимается веб-сервер (возможно одним из вариантов, упомянутых в 1) и на этом чуде можно тестироваться

    3. если говорить про виртуалки, то это вполне рабочий вариант, для тестирования питонячих приложений должно хватить по 256мб на машину, 4 машины — это гигабайт оперативки, что вполне подъемно для любой тачки с 4гб памяти. если же хочется чего-то попроще, то ничто не мешает, как уже упоминали, просто коннектиться к локалхосту, программы запускаются или в разных процессах, или даже в разных потоках. для тестирования падений сети, задержек, дисконнектов и прочего можно использовать самописные tcp прокси (мы так и делаем), проксей можно очень по-разному управлять, эмулирую самые разные «печальные» ситуации

    зы. несколько виртуалок можно легко поднять с помощью vagrant, а установить на них нужный софт можно с помощью puppet, chef, salt — по вашему вкусу
    Ответ написан
    Комментировать
  • Python/PyQt vs C++/Qt для миграции с .NET. Что выбрать?

    stepank
    @stepank
    мне кажется, для начала нужно определить — какие сюрпризы могут быть с PyQt на целевых машинах: насколько легко ставится, нужно ли его самому собирать из исходников, если нужно, то насколько это сложно именно в том окружении, будете ли вы это сами делать или кто-то другой. дело в том, что если у вас будет одна-две машины, к которым у вас есть прямой доступ, руками вы это вполне осилите, а если машин несколько десятков или (а вдруг?) сотен? с чистым Qt в этом отношении проблем должно быть поменьше

    если вы убедитесь, что использовать PyQt на целевых машинах не сложно, берите его, на питоне писать очень легко и комфортно, а узкие места можно выделить в c/c++ модули для питона

    еще взгляните на PySide, у него из свободных лицензий LGPL в отличие от GPL у PyQt, и говорят он вообще более pythonic, хотя я с ним не работал
    Ответ написан
    4 комментария
  • Python web framework

    stepank
    @stepank
    я бы рекоммендовал django, у него прекрасная документация, куча батареек, огромное сообщество, куча материалов по всему интернету. чисто для сравнения масшатбов:

    $ pip search django | wc -l
    2373
    $ pip search pyramid | wc -l
    90
    $ pip search flask | wc -l
    119
    Ответ написан
    3 комментария