LINUX.ORG.RU
ФорумTalks

EDP, PHP, Python и все-все-все


0

0

Являются ли Python фреймвоки(Django, Pylons, TG) событийно-ориентированными ? Можно ли на PHP использовать СОП ? Чем вы пользуетесь в других средствах(twisted, epoll, kqueue) ?

★★★★★

На неделе Rails 3 в бете будет. Хватит дурковать.

ZveN ()

зовис, зачем веб-фреймворкам событийная модель?

hizel ★★★★★ ()
Ответ на: комментарий от hizel

зовис, зачем веб-фреймворкам событийная модель?

какие варианты предлагаешь при ~100000 конектов ?

xpahos ★★★★★ ()
Ответ на: комментарий от xpahos

этим занимается веб-сервер, не?
сквозное кэширование и распределение нагрузки на несколько серверов, как обычно

hizel ★★★★★ ()
Ответ на: комментарий от xpahos

>> зовис, зачем веб-фреймворкам событийная модель?

какие варианты предлагаешь при ~100000 конектов ?

Кластер.

tailgunner ★★★★★ ()

В том смысле что ты думаешь нет. И не нужно.

true_admin ★★★★★ ()
Ответ на: комментарий от mikhalich

> нитроген лучше джанги?

Для прокачки ЧСВ - гораздо лучше.

tailgunner ★★★★★ ()
Ответ на: комментарий от mikhalich

Джангу не смотрел, но нитроген прост и понятен: логика обычно отделена от верстки. Да и эрланг, ИМХО, скорострельнее питона + масштабируется легко, на роутере можно поднять. Из минусов - под эрланг может быть дефицит энтерпрайза: всяких там xml-парсеров (если вдруг надо), переходников к ораклам и проч.

shahid ★★★★★ ()
Ответ на: комментарий от shahid

Меня вот бесит в эрланге отсутствие штуки aka rubygems, унифицированного API для доступа к базам данных (не odbc), повсеместное использование префиксов к модулям, вместо того чтобы юзать packages. Но больше всего достает отладка путем io:format, потому что хрен поймешь где и что вывалилось.

ZveN ()
Ответ на: комментарий от mikhalich

> а с документацией у нитрогена как?

API и сэмплы на сайте хорошо описаны. Но часть док прямо в сорцах: в комментах нужно смотреть, хотя сложности это сейчас не вызывает. Пока в сорцы нитрогена лазил только за описаловом к wf:email и http_basic_auth.

shahid ★★★★★ ()
Ответ на: комментарий от ZveN

> унифицированного API для доступа к базам данных (не odbc),

Касался когда-то с голым jdbc - профита не прочувствовал. Имеется ввиду что-то типа хибернейта?

shahid ★★★★★ ()
Ответ на: комментарий от tailgunner

Кластер.

ну там то, что готовое используется грузит только одно ядро и не использует события. Слишком много ресурсов расходуется попросту

xpahos ★★★★★ ()
Ответ на: комментарий от xpahos

> ну там то, что готовое используется грузит только одно ядро и не использует события.

Event-driven - это значит, что оно не использует нити и тоже будет грузить только одно ядро // К.О.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Event-driven - это значит, что оно не использует нити и тоже будет грузить только одно ядро // К.О.

сейчас оно вообще ничего не использует

xpahos ★★★★★ ()
Ответ на: комментарий от xpahos

>> Event-driven - это значит, что оно не использует нити и тоже будет грузить только одно ядро // К.О.

сейчас оно вообще ничего не использует

Это значит, что в чем бы не была проблема, EDP ее не решит.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Это значит, что в чем бы не была проблема, EDP ее не решит.

если попробовать распараллелить ее ? EDP будет обрабатывать 3-4 события выделяя их в разные потоки ?

xpahos ★★★★★ ()
Ответ на: комментарий от xpahos

> EDP будет обрабатывать 3-4 события выделяя их в разные потоки ?

Весь пойнт EDP - избежать использования нитей, как раз для ситуаций, когда у тебя 100500 слиентов, и создавать по нити на каждого невозможно. Можно ли как-то задействовать гибридную схему (пул нитей + event-driven в пределах нити) - ХЗ.

tailgunner ★★★★★ ()

> Можно ли на PHP использовать СОП ?

Таки пых-пых вообще использовать можно? А я думал, что можно только Джаву использовать и быть не Ъ.

Bioreactor ★★★★★ ()
Ответ на: комментарий от xpahos

>если попробовать распараллелить ее ? EDP будет обрабатывать 3-4 события выделяя их в разные потоки ?

таки если паралеллить, то в процессы же, а не в нити.

volh ★★ ()

А PEP 342 не поможет? Там допилили генераторы до чего-то похожего на корутины. Там и примеры шедулеров есть, и send в них можно делать, ну почти агенты же, или я неправильно понимаю?

volh ★★ ()
Ответ на: комментарий от volh

для Ъ

Coroutines are a natural way of expressing many algorithms, such as
simulations, games, asynchronous I/O, and other forms of event-
driven programming or co-operative multitasking. Python's generator
functions are almost coroutines — but not quite — in that they
allow pausing execution to produce a value, but do not provide for
values or exceptions to be passed in when execution resumes. They
also do not allow execution to be paused within the «try» portion of
try/finally blocks, and therefore make it difficult for an aborted
coroutine to clean up after itself.

<skipped for good>

In other words, with a few relatively minor enhancements to the
language and to the implementation of the generator-iterator type,
Python will be able to support performing asynchronous operations
without needing to write the entire application as a series of
callbacks, and without requiring the use of resource-intensive threads
for programs that need hundreds or even thousands of co-operatively
multitasking pseudothreads. Thus, these enhancements will give
standard Python many of the benefits of the Stackless Python fork,
without requiring any significant modification to the CPython core
or its APIs. In addition, these enhancements should be readily
implementable by any Python implementation (such as Jython) that
already supports generators.

volh ★★ ()
Ответ на: комментарий от volh

А PEP 342 не поможет? Там допилили генераторы до чего-то похожего на корутины. Там и примеры шедулеров есть, и send в них можно делать, ну почти агенты же, или я неправильно понимаю?

ну я пока попробую перевести с epoll на kqueue и запустить все это на FreeBSD, а потом уже о python подумаю :)

xpahos ★★★★★ ()
Ответ на: комментарий от xpahos

>ну я пока попробую перевести с epoll на kqueue и запустить все это на FreeBSD, а потом уже о python подумаю :)

гхм. так ведь вроде бы тот же twisted поддерживает через libevent и epoll, и kqueue.

volh ★★ ()
Ответ на: комментарий от volh

> Там допилили генераторы до чего-то похожего на корутины. Там и примеры шедулеров есть, и send в них можно делать

Вместо использования писанных на коленке лучше погуглите на предмет гринлетов в питоне, ну и stackless никто не отменял.

ntp ()
Ответ на: комментарий от ntp

>Вместо использования писанных на коленке лучше погуглите на предмет гринлетов в питоне, ну и stackless никто не отменял.

Так вроде бы ж сам Гвидо писал, а мы все знаем что Гвидо велик ;) Просто эта штука походу изкоробки должна работать на всех реализациях, раз уж часть языка, и может пригодиться если надо построить что-нибудь pure-python.

Про отличия от генераторов написано вкратце на хоумпаге greenlets, а можно еще чего-нибудь почитать про наколеночность текущих генераторов?

volh ★★ ()
Ответ на: комментарий от volh

Я имел в виду, что вместо примера из PEP лучше использовать сторонние библиотеки (которые все равно через генераторы, но зато более функциональные и зрелые).

Конечно, по сравнению, например, с корутинами Lua питоновские генераторы слабенькие, но в остальном вполне годные.

ntp ()
Ответ на: комментарий от shahid

Ни одной нужной мне либы я не нашел упакованой этими тулзами => их не сущестует.

ZveN ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.