SOAP-сервисы, Spyne и наследование Spyne-моделей

В проекте, который я разрабатываю, используется библиотека Spyne.

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

Continue reading

DjCelery и долгие задачи

Сегодня столкнулся с проблемой: часть задач отправлялась в celery, но не выполнялись, причем в rabbitmq-очередях была пустота – т.е. задачи были уже забраны в celery но не были выполнены, а в таблице celery_taskmeta эти задачи имели состояние PENDING.

Continue reading

Python, Spyne и lxml: PCDATA invalid Char value

Недавно столкнулся с проблемой – SOAP-сервис, работающий на Spyne, отдавал примерно такую ошибку:

<?xml version='1.0' encoding='UTF-8'?>
<senv:Envelope xmlns:senv="http://schemas.xmlsoap.org/soap/envelope/">
    <senv:Body>
        <senv:Fault>
            <faultcode>senv:Client.XMLSyntaxError</faultcode>
            <faultstring>PCDATA invalid Char value X, line Y, column Z</faultstring>
            <faultactor></faultactor>
        </senv:Fault>
    </senv:Body>
</senv:Envelope>

Continue reading

Производительность CSS-анимаций и переходов: под капотом браузера

Это перевод статьи из блогов Adobe.

Вероятно, Вы уже использовали CSS-анимации и переходы в своих проектах (а если ещё нет, то ознакомиться с ними Вы можете по ссылкам: animations, transitions). Так же, вероятно Вы сталкивались с тем, что некоторые из анимаций проходят плавно, а некоторые “идут рывками”. Есть идеи, почему?

В этой статье мы исследуем, как браузеры обрабатывают CSS-анимации и переходы, а в результате Вы сможете интуитивно (еще до написания кода) догадываться, в каких случаях анимация будет плавной, а в каких вместо плавной анимации будет “слайд-шоу”.

Continue reading

SOAP, HTTP, HTTPS и редиректы, а так же PHP и Python

Всем привет!

Сегодня, работая с soap-сервисами столкнулся с неожиданной для меня проблемой: по неопределенной причине soap-сервис прекрасно работал из php-клиента (SoapClient) но напрочь отказывался работать из под python (suds).

Continue reading

Django-сигналы и weakref

Столкнулся на первый взгляд с неочевидной проблемой:

def subscribe(signal):    
    u"""
    Подписывает что-то на сигнал.
    """
    def on_signal(**kwargs):
        u"""
        Выполняет какую-то обработку сигнала.
        """
        print(kwargs)

    signal.connect(on_signal)

После подписи на сигнал с помощью subscribe(signal) обработчик on_signal() не выполняется!

Continue reading

Понимание потока документа

Нормальный поток документа – модель, по которой элементы распологаются на странице в соответствии с CSS-спецификацией и своим расположением в исходном коде страницы.

В нормальном потоке документа элементы располагаются последовательно, каждый с новой строки – для блочных элементов, в одной строке – для строчных элементов.

Css-свойства float: left | right и position: absolute | fixed (но не position: relative) вытаскивают элемент из нормального потока и отображают его в соответствии с этими правилами. Это означает, что блок больше не будет оказывать влияния на соседние по разметке элементы из нормального потока: не будет отталкивать их с помощью margin‘ов и не будет занимать места в потоке (визуально это может выглядеть как наложение одного слоя на другой).

Continue reading