altre destinazioni

ultimi post

ultimi commenti

tag principali

categorie

archivi

powered by

  • WPFrontman + WP

friends

copyright

  • © 2004-2011
    Ludovico Magnocavallo
    tutti i diritti riservati

Libevent-based HTTP/1.1 client

28 dicembre 2006

6 commenti

A snapshot of my toy HTTP/1.1 client built on pyevent. It’s very much incomplete, and probably full of bugs, but it’s a start and it’s damn fast. On my clunky old PIII 1.2 laptop it is able to complete 1k requests of favicon.ico served by lighttpd in less than half a second. The source (updated from time to time as work progresses) is here.

J2EE sucks balls (e libevent per Python)

8 novembre 2006

12 commenti

I am sick and fucking tired of the shit that continuously goes wrong with that monstrous piece of bloatware that takes a zillion fucking days to write “hello, world” in. [...] J2EE will never see the light of day here again. And if the next Java project is not a resounding success, I know some people that better master C awful damned fast. I don’t give a flying fuck if Java reduces my defect rate by 50%, if it increases my development time by a factor of six trillion, it’s fucking useless.

Eccezionale commento su Slashdot (thanks Ryan) che esprime esattamente tutto quello che penso di Java e J2EE dopo alcuni anni di lavoro in ambienti “Enterprise”. Giusto oggi sentivo parlare di crash incomprensibili della virtual machine sulle super-affidabili (secondo chi le vende) macchine virtuali zLinux che girano su processori dedicati su mainframe…

Passando ad argomenti più allegri, per rimediare allla fame di risorse della classifica dei blog (che comunque grazie uno sponsor generoso riceverà due bei server nuovi fra qualche giorno per sostituire il vecchio e stanco Celeron 900) sto riscrivendo l’architettura di backend. L’idea generale è quella di usare parallel per distribuire i task, specializzando i processi. Le interazioni con la rete (tutte GET e POST HTTP) saranno gestite da un singolo processo, che utilizza socket asincroni tramite libevent e pyevent.

Sto finendo la prima versione del client HTTP basato su libevent/pyevent, e sono assolutamente sbalordito dalle performance: su un portatile mediocre (credo non arrivi a 2Ghz) su cui girano sia il server che uso per i test (lighttpd) che il client che sto sviluppando, riesco a fare più 3000 GET al secondo della pagina di default di lighttpd. Dopo avere aggiunto il supporto ad alcune funzionalità indispensabili di HTTP/1.1 come il chunked transfer encoding e il parsing degli header, la cifra è scesa un po’ ma è sempre sulle 2000 richieste al secondo. Libevent è veramente incredibile, e facilissima da usare anche per chi è alle prime armi con il network programming.

Se vi interessa approfondire date un’occhiata ad apricot, un server HTTP supersemplice in Python che va come un missile, o questo altro server che ha performance simili. Avendo tempo sarebbe bello trasformarli in server stabili e con le funzionalità che servono per usarli in produzione.

Post scriptum per il duo di Treviglio, non ho dimenticato il sito, settimana prossima dovrei avere un prototipo usabile. Spero non sia troppo tardi. Ah, e spazio per ospitarlo se serve.