Решил тут для практики написать небольшую программку, которая делает LISTEN на сервере и печатает отправленное пр помощи NOTIFY на консольку, как описано здесь: http://initd.org/psycopg/docs/advanced.h... но с интеграцией в gevent'овский eventloop (а точнее, используя psycogreen) и нифига ... more →
*gevent
Да у меня термоядерный баттхёрт от этой асинхронщины, я просидел несколько часов, пялясь в консоль и наблюдая, как ебучий сервер отжирает полмегабайта памяти в минуту. Блядь блядь блядь!
ГРИНЛЕТЫ АСИНХРОНЩИНА КОКОКОКО
ТЫСЯЧИ СТРОК КОДА
УТЕЧКА ПАМЯТИ ДОХУЯ ГИГАБАЙТ В СЕКУНДУ
ДА ЭТО ЖЕ ОЧЕВИДНО КАК ЕЁ ИСПРАВИТЬ
Я до ... more →
На заметку: никогда, никогда, никогда не использовать gevent.event.AsyncResult.get с бесконечным timeout. Вроде бы отловил злоебучую утечку памяти. Надеюсь.
http://mrjoes.tumblr.com/post/3197071123...
«Какие общие проблемы у такого подхода:
1. Проблемы со сборкой мусора
Из официальных док: Greenlets do not participate in garbage collection; cycles involving data that is present in a greenlet’s frames will not be detected. Storing references to other greenlets ... more →
И только сейчас я врубился, что использовать django orm с gevent — достаточно тупая идея, потому что psycopg2 не умеет в cursor.execute в асинхронном режиме. Можно было вообще не ебаться с gevent и писать сразу на джанге.
Решил проверить свой асинхронный веб-чат на средненькой нагрузочке у себя на ноуте. Он не выдержал ab -c 20. Или я говнокодер, или питон не нужен, или всё вместе. А ещё я пойду искать в нём утечку памяти.
https://github.com/fvbock/gDBPool теперь у нас есть пул для sql. Пока в альфе, но всё равно его не хватало.
У меня лютый баттхёрт. Очень лютый. Я докопался до причины моих дедлоков.
Я на что только не грешил. Я переписал дохрена кода на своём асинхронном сервере. Он стал логичнее, проще. Пропали бесполезные метаклассы и WeakValueDictionary, я сделал всё прямо. Не работает.
Правил конфиги апача, подсоединял всё ... more →
До чего хуёвый день. У меня в коде где-то дедлок, но не удаётся его найти.
http://projects.unbit.it/uwsgi/wiki/Geve... Теперь uWSGI умеет цикл gevent. Да это же извращение, gevent — сам по себе standalone веб-сервер, на кой его запускать через wsgi?
Гуглил тут на предмет связки mongo с gevent и наткнулся на твой пост в жуйцах трёхмесячной давности: http://juick.com/kb/1361486. Как, удалось победить?
Всё, два дня чтения исходников помогли мне. Я, похоже, въехал в принципы работы gevent. Вот так всегда, восхищаешься чем-то, а глянул в исходники и ужаснулся.
Решил разобраться, как работает gevent. Набрёл на исходники greenlet. Я думал, оно производит какие-то хитрые манипуляции с интерпретатором... Оказалось, всё гораздо серьёзнее. Оно напрямую манипулирует стеком всей программы! Ассемблерные вставки для каждой архитектуры!
А ещё GC не осилит уничтожить циркулярно ... more →
gevent 1.0a1 is available
https://bitbucket.org/denis/gevent/src/t...
...
- Added support for multiple OS threads, each new thread will get its own Hub instance with its own event loop.
- Added a way to gracefully shutdown the application by waiting for all outstanding greenlets/servers/watchers: ... more →
Может кому интересно будет. Результаты моего *«* исследования *»* Личную инфу вырезал. http://ompldr.org/vOTlqdQ
Вдогонку к #efsth
Добрый человек дал мне протестировать мои штучки на сервере из оптеронов, с суммарным количеством ядер — 48, и 100 гб оперативки.
Результаты просто рандомные, тестовые проги выдавали рандомные результаты не связанно с количеством воркеров. Тем не менее, максимумы почти везде совпадают — кроме ... more →
Сделал парочку тестов. Веб-сервер (количество воркеров настраивается), на вход — f(x), на выходе — с помощью sympy F(x), f'(x) и решение уравнения f(x) = 0. Сервер на gevent рвёт по всем параметрам сервер на основе BaseHTTPServer. Подробности — может быть когда-нибудь.
Ох вау http://wiki.inportb.com/wiki/Projects:Py...
geventreactor is a gevent-powered Twisted reactor whose goal is to enable mixing of gevent- and Twisted-oriented code. This allows developers to benefit from the performance of libevent and greenlet while retaining access to the extensive ... more →
*gevent is used by:
werehuman
werehuman
Артс
arts
Оранжевус Охуеннус
utros
werehuman
arts
utros