Python-digest #35. Новости, интересные проекты, статьи и интервью [27 июля 2014 — 03 августа 2014]


    Дайджест был опубликован ранее, но определенным причинам был исключен с хабра, сейчас же было принято решение вернуть его обратно.
    Очередной выпуск новостей из мира Python.
    За иллюстрацию к посту, как и раньше, благодарим owlman75, а так же alrusdi за идею дайджестов и за то, что я по прежнему могу публиковать эти дайджесты для вас.
    В этом выпуске у нас вот такие интересные новости собрались: свеженькие уязвимости в django, в релизах второй релиз кандидат Django 1.7, APScheduler 3.0, Pylint 1.3 / Astroid 1.2, django-extensions 1.3.9, boto 2.32.0 и еще много интересных библиотек и статей для изучения.


    Новости




    Статьи и интервью




    Интересные проекты, инструменты, библиотеки




    Релизы


    • Django 1.7 RC2
      Второй релиз кандидат Django 1.7 В этом релизе Django подверглась многочисленным изменениям. Самые значительные это: обновление схем миграций, улучшение инструментов валидации, реорганизация путей инициализации и загрузки приложения, а также поиск и загрузка пользовательских баз данных.
    • boto 2.32.0
      Релиз включает поддержку обратной совместимости Python 3.3 и 3.4, поддержка IPv6, подключения пиринга Amazon VPC, атрибуты сообщений Amazon SNS, новые регионы для Amazon Kinesis, и несколько исправлений.
    • Pylint 1.3 / Astroid 1.2
      Большой список новых проверок и исправлений. Это последний релиз с поддержкой python ниже 2.7
    • APScheduler 3.0
      Система управления и отложенного выполнения задач. Имеет точки пересечения с Celery, но не является его альтернативой. В статье по ссылке изложены все подробности.
    • django-extensions 1.3.9
      Главным образом релиз прицелен на улучшение совместимости с django 1.7


    Конференции, события, встречи разработчиков


    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 19

      0
      27 июля 2014 — 03 августа 2014?

      Из черновиков выпал?
        +2
        Да, после моего бана тут на хабре, забыл опубликовать пост обратно, решил вернуть его.
      • НЛО прилетело и опубликовало эту надпись здесь
          +1
          Самое веселое — у него тот же Flask-Admin, но без батареек.
          0
          Все, понял, старый выпуск, не актуально.

          Django 1.7 вышел в релиз еще 2 сентября.
          www.djangoproject.com/weblog/2014/sep/02/release-17-final/
            0
            Выпуск старый, просто достал его из черновиков, ибо люди спрашивали о нем в ЛС, все свежие выпуски пока только на нашем сайте
              0
              а где ещё публикуете свежие выпуски?
                0
                Только у нас на сайте, за ссылкой лучше в ЛС обратитесь
                  0
                  Планируете свежие выпуски выкладывать на хабре? Или теперь только на своей площадке?
                    0
                    Планируем, но скорей всего на хабре будут подборки 1 раз в месяц самых вкусных новостей за этот период, если концепцию до конца проработаем то с октября и начнем постить
            +1
            Как-то я в прошлый раз пропустил статью про gevent. Кто с ним знаком, расскажите, пожалуйста, как он умудряется (в сравнении с asyncio) асинхронно работать без декораторов и yield'ов?

            import asyncio
            
            @asyncio.coroutine
            def compute(x, y):
                print("Compute %s + %s ..." % (x, y))
                yield from asyncio.sleep(1.0)
                return x + y
            
            @asyncio.coroutine
            def print_sum(x, y):
                result = yield from compute(x, y)
                print("%s + %s = %s" % (x, y, result))
            
            loop = asyncio.get_event_loop()
            loop.run_until_complete(print_sum(1, 2))
            loop.close()


            import gevent
            
            def compute(x, y):
                print "Compute %s + %s ..." % (x, y)
                gevent.sleep(1.0)
                return x + y
            
            def print_sum(x, y):
                result = compute(x, y)
                print "%s + %s = %s" % (x, y, result)
            
            print_sum(1, 2)


            И, главное, почему в asyncio, который разрабатывался позже и на уровне Гвидо, не сделано так же?
              +4
              Потому что gevent основан на серой магии greenlet.
              Которая имеет свои подводные камни и особенности, и никогда не войдет в стандартную библиотеку.
                +1
                Gevent заменяет python-потоки и некоторые ресурсоемкие операции своими аналогами (которые работают на libevent), из-за этого перед запуском программы нужно выполнить манки-патчинг.

                Asyncio же является полноценной библиотекой, соответственно подход более традиционный, через декораторы и функции.
                  +3
                  libevent -> libev
                  ресурсоемкие -> блокирующие ввод-вывод (IO bound)
                  +1
                  gevent заменяет блокирующие методы возвратом управления в планировщик green thread-ов, где выставляется ожидание вида «разбудить этот поток, когда случится вот это». точно это распространяется на сокеты, таймауты, блокирующий get из очередей, ожидание завершения другого green thread. возможно, файловое i/o.

                  для возможности использования green thread-ов вообще, gevent дичайше издевается над интерпретатором, а для перехвата вызовов идет манкипатчинг. в stdlib такое не пускают.
                    0
                    Всегда было любопытно, чем Gevent отличается от Stackless в плане работы с userspace thread'ами.
                      0
                      Я, к сожалению, не знаю точно, но предположу, что мало чем. Сам по себе gevent — обертка над greenlet + libev.

                      >> pypi.python.org/pypi/greenlet
                      >> The greenlet package is a spin-off of Stackless, a version of CPython that supports micro-threads called «tasklets».
                      >> There are several libraries that use Greenlet as a more flexible alternative to Python's built in coroutine support:
                      >>…
                      >> gevent
                      >>…

                      В итоге, это выглядит примерно как stackless к которому прикрутили libev.
                        +1
                        Почти ничем не отличается — gevent использует greenlet, который является выдранным hard switching mode из stackless.

                        Единственное, но очень важное отличие между stackless и greenlet — у stackless есть soft switching который сильно быстрее и сильно надежнее.

                        Вот тут есть немного: www.stackless.com/pipermail/stackless/2009-September/004268.html
                        +2
                        1. Не используйте, пожалуйста, термин «планировщик green thread-ов» — такого объекта в gevent не существует.
                        2. Файловое i/o не имеет неблокирующей реализации в gevent — потому что linux kernel такое не умеет.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое