Des de fa molt de temps vaig deixar de programar en Python, però això no impedeix que comparteixi amb vosaltres les tecnologies que conec;). Temps enrere em enfrasqué en la recerca de l' «millor» framework web en Python, ja que el que usava (web2py) era endimoniadament lent. La meva recerca em va portar fins wheezy.web; els que el coneixen segurament ho hagin fet a través de l' espectacular benchmark que va fer l'autor al seu bloc:
Ja ho sé, 25.000 sol·licituds per segon en comparació amb la resta de frameworks és una autèntica passada. Jo mateix vaig usar wheezy.web durant un temps i he de dir que és una autèntica obra d'art. Miris per on ho miris: la rapidesa, la simplicitat, la seguretat ... Tot. I a sobre és la feina d'una única persona: Andriy Kornatskyy.
- funciona amb 2 Python, 3 Python y PyPy. Encara que el 3 doni millor rendiment, és preferible seguir usant el 2 fins que el 3 maduri prou.
- El seu disseny és modular, Per la qual cosa wheezy.web són més coses: wheezy.template, wheezy.html, wheezy.security... Fes servir les parts que vulguis.
- Documentació senzilla i fàcil d'entendre.
- Optimització automàtica de l'HTML (El comprimeix perquè ocupi menys sense necessitat d'usar eines externes).
- Com no podia ser d'altra manera, és programari lliure i codi obert ; D.
- etc ...
Al blog de Andriy hi ha magnífics tutorials per instal·lar wheezy.web a seques o amb i18n (múltiples idiomes); també explica com utilitzar wheezy.web amb Nginx. L'inconvenient de tots els seus tutorials és que assumeix que fas servir Debian, Ja que ell no ha provat en altres distros.
si fas servir Fedora i t'interessa wheezy.web, Estàs de sort! Aquí tens la comanda que instal·larà els paquets necessaris per poder seguir els seus tutorials:
sudo dnf install python python-devel python3 python3-devel python-setuptools python-virtualenv libxml2 libxml2-devel libxslt libxslt-devel libmemcached libmemcached-devel memcached memcached-devel gzip ntpdate gettext uwsgi uwsgi-plugin-python socat nginx
La veritat és que existint wheezy.web em sembla un crim utilitzar un altre framework, així que si treballes amb Python, ¡fes un cop d'ull com a mínim! L'únic desavantatge que se li pot atribuir és que no porta cap capa d'abstracció per facilitar el treball amb bases de dades (ni falta que fa, però hi ha gent que ho agraeix).
I això ha estat tot. Un article breu, però de rellevància. Prometo portar més tecnologies interessants! Ens veiem ~.
Per cert, una curiositat, sabeu per què es diu «wheezy»? Andriy és fan de Debian. Aquí ho deixo;).
El rendiment no és l'únic factor. Comparat a Django, és bastant il·legible. I sincerament les 25000 peticions per segon caldria veure-les en acció, però prefereixo quedar-me amb 15000 (django) escriure saludablement, i la resta de la feina delegar-ho a la infraestructura, la qual REALMENT és la que et va a rebre o no, 25000 peticions.
Salutacions! Gràcies per la data 🙂
De màs està dir que per fer el benchmark ús versions antigues d'altres frameworks ...
L'article de l'benchmark és de l'2012. Ho va tornar a modificar i ampliar el 2013 i ell mateix especifica que són d'aquest any: «Latest available versions as of this writing (March 15, 2013)»
La il·legibilitat que esmentes no crec que sigui per tant. Entenc que moltes vegades es busca facilitat per programar, però no crec que hi hagi diferències realment considerables. Jo vaig usar durant un any web2py, i t'asseguro que és dels frameworks més fàcils d'usar que hi ha disponibles. Això sí, el seu rendiment és pèssim en moltíssims sentits ... En l'article de l'benchmark el propi Massimo Di Pierro (creador d'web2py) té un debat amb Andriy en què finalment admet que hi ha molt per millorar; parlant amb Andriy per IRC, em deia «hi ha una filosofia àmpliament acceptada de posar-li de tot als frameworks i inflar de característiques encara que la majoria no es facin servir», i quanta raó tenia ...
Sobre el que dius de la infraestructura, comparteixo parcialment el que dius; 10.000 de diferència és MOLT, sobretot quan parlem de l'framework més popular i madur versus un de molt recent i poc conegut. El meu enfocament sempre és el de combinar la màxima eficiència amb la màxima productivitat, i crec que wheezy.web és el que millor ho fa. He fet servir web2py (el que més), Django, Pyramid i wheezy.web i t'asseguro que no té rival. Un cop t'adaptes a la seva forma de fer les coses, no et t'enlaires d'ell. La únics avantatges de Django és l'àmplia comunitat que té i els recursos que hi ha per tot Internet; és a dir: facilitat. wheezy.web és bastant nou en comparació, i el coneix molt poca gent; si es va a la fàcil fàcil, millor web2py o Django xD.
No em vull estendre, però quan parlem de sol·licituds per segon parlem de concurrència. Si es busca concurrència, Python no és el llenguatge apropiat. Per a això estan altres llenguatges com Erlang o Haskell (i si m'apures, Rust). Però precisament per això és impressionant que wheezy.web ocupant tan poc codi, sent el treball d'una persona en el seu temps lliure i una altra sèrie de factors, hagi aconseguit arribar a semblant rendiment.
Entenc això que dius de «escriure saludablement», però un mai sap quant pot créixer un projecte a llarg termini. Utilitza eines més eficients i concurrents, a més de simples (mantinc que wheezy.web és simple per al rendiment que té), permeten estalviar diners i fer que el projecte escali durant més temps sense canviar de llenguatge. A la fi tot està en els diners que un té per pagar el seu servidor. Hi ha webs molt famoses en PHP, quan PHP és horrible en rendiment ... Però com solucionen aquest problema? Comprant millors servidors. Amb l'altre enfocament es soluciona programant millor i estalviant recursos: P.
Sento haver-me estès tant. M'apassiona molt fàcilment xDDD. Salutacions!
Vaig entendre perfectament al que vols dir, però justament pel que esmentes, si un projecte tendeix a créixer o no, ja des del anem amb wheezy no hi ha capa de bases de dades.
Al meu punt de vista, el millor és no casar-se amb cap llenguatge. Si vols concurrència pots utilitzar Node també, que el seu motor corre en C.
El que mecionas de l'rendiment, no és només escalar verticalment (el cas de PHP), Facebook per exemple brinda HHVM, que he llegit (no provat) que millora en un 50% el rendiment i això no és comprar servidors. PHP a seques sense capes de memòria cau i / o altres formes d'optimitzar és tan «dolent» com qualsevol altre llenguatge sense això últim, i dic dolent com per donar-los un nom, no és només «programar millor».
Salutacions! 🙂
A veure, el que no hi ha és capa d'abstracció. Però tu fas servir la llibreria o mòdul corresponent per treballar amb la base de dades i fora, no hi ha més misteri. La capa d'abstracció de web2py és molt senzilla, per exemple, però el rendiment baixa moltíssim a ell ni tan sols poder escriure SQL optimitzat. Tot és en Python; fàcil, però a canvi de rendiment.
Conec HHVM i precisament per això és pel que llenguatges com PHP són dolentíssims per als temps moderns; si Facebook fos a Haskell o Erlang no hauria calgut crear HHVM. Utilitza la memòria cau, comprimir els arxius que s'envien i reben, etc. són aspectes evidents de qualsevol desenvolupament. El tema està en que l'eina ha de donar la talla :). I hi ha eines que no la donen. El millor exemple d'això és JavaScript ... En aquest cas al menys hi meravelles com coffeescript, Dart, etc. que compilen a JS.
Salutacions!
Perfecte! 🙂
Només una cosa, Facebook si utilitza haskell, més precisament Haxl 🙂
Bé, jo faig servir bastant web2py, estic d'acord amb que no és el framework més ràpid, però aquest benchmark em sembla una mica fora de lloc, mes encara quan estem parlant de fa ja uns 3 anys, l'aplicació hola mut de web2py està molt carregada en comparació amb les d'altres frameworks, però jo, sincerament, no he experimentat aquesta diferència abismal en el rendiment entre els meus aplicacions escrites en web2py i django.
Per cert, en web2py si es pot escriure SQL per a realitzar les consultes directament.
Salutacions.
El Framework web més rapid dius, però no muentras algun exemple i altres factors claus, com el desenvolupament, productivitat, documentacion. Existint django, no se per que sembla ser un crim no utilitzar aquest: p
- En la documentació ja hi ha exemples. A la seva pàgina de BitBucket també: https://bitbucket.org/akorn/wheezy.web/src/tip/demos/
- Sobre el desenvolupament i la productivitat, personalment em sembla que resumir-ho en «simplicitat» és una bona opció. Que hi ha frameworks més simples i fàcils encara? És clar. Però no amb tant rendiment.
- El link a la documentació ho he posat en l'article xDDD.
- El per què dic que és un crim és perquè considero que una pàgina web ha de ser el més eficient possible, en tots els sentits. Com he esmentat abans, hi ha frameworks més fàcils d'usar, però usar wheezy.web tampoc és programar en C. Simplement cal esforçar-se més :).
Salutacions ^^.
Per cert, per si a algú li fa mandra informar-se i creu que Wheezy web només guanya en sol·licituds per segon ... Aquí teniu uns quants benchmarks més:
http://paste.desdelinux.net/5128 (el filtro de spam de DesdeLinux no me deja poner tantos links)
Demano disculpes per no haver-los inclòs prèviament. Vaig pensar que amb un era suficient per cridar la curiositat xD. Salutacions!
Fins ara feliç amb Django.
Ehh cada vegada que llegeixo aquestes coses em fa ràbia, pesava que era només amb els frameworks php (Symfony, Yii, CondeIgniter, Phalcon ......... WDF !!). Si ja Django té una comunitat (bastant gran) i és un excel·lent framework per què en comptes de perdre el temps reinventant la roda no s'uneixen a l'equip de django. @ Lajto en el teu conversa amb l'autor de wheezy.web perquè no li preguntes si mai ha pensat unir-se a django team, joder.Saludos ..
És que encara que tots dos siguin frameworks web tenen enfocaments molt diferents. Django és pesat, té molt codi, mentre que wheezy.web és lleuger aposta per la simplicitat i l'optimització. Que jo sàpiga, wheezy.web és l'únic framework web en Python realment modular (és a dir, que divideix tot el seu codi en diferents parts que poden funcionar de forma independent). Té moltes característiques que el diferencien de la resta.
Per què no incorporar-se a Django, dius? Perquè Django ha estat dissenyat amb enfocaments completament diferents. Com li apliques un disseny modular a Django? ¡Caldria refer pràcticament des de zero! El mateix amb moltes altres qüestions.
Entenc aquest sentiment de «millor un únic framework que funcioni bé amb una gran comunitat», però no és tan fàcil. Perquè m'entenguis, per fer una associació superficial, Django és com si fos Debian i wheezy.web com si fos ... Arch? ¿Gentoo? Definitivament és un mal exemple, però crec que s'entén xDDD.
Salutacions!
Que tal Lajto, escolta estic fent una app i lei la documentació de wheezy.web i és el primer framework web en python que li he entès a la primera 🙂 Veras no tinc molt coneixement de xarxes i web, però tinc especial atracció a la programació .
¿Podries ajudar-me a com modificar el hola món per fer-ho un servidor públic? potser és una pregunta molt tonta, disculpa, però no trobo en la documentació com fer-ho.
Una altra pregunta, 😉 en els mètodes get i post, com torno informació que no sigui una pàgina html, ¿retorn informació tal qual? com un string o una llista o qualsevol tipus de dada. El client una app en android.
Hola Ulisses! M'alegra moltíssim que estiguis provant wheezy.web: D.
Sobre el que comentes, et recomano àmpliament que no muntanyes teva pròpia estructura. La que munta Andriy és bastant bona, per la qual cosa et recomano que la segueixis. En l'article hi ha dos links a el blog d'Andriy on explica els passos amb i18n i sense i18n. Per si et resulta una mica confús, t'explico com fer-ho sense i18n a continuació:
Obre una terminal i executa aquests quatre ordres (substitueix «web-de-prova» pel nom de la carpeta que vulguis per al teu projecte):
wget https://bitbucket.org/akorn/wheezy.web/downloads/quickstart-empty.zip
unzip quickstart-empty.zip
mv quickstart-empty web-de-prova
rm quickstart-empty.zip
Si vols utilitzar PIL, modifica l'arxiu setup.py i descomenta el codi corresponent. Un cop estiguis a punt, executes els següents tres comandos:
cd web-de-prova
make env
env / bin / easy_install uwsgi
Ja tens el teu servidor muntat. Si vols fer un benchmark ràpid per veure si funciona, estant dins de la carpeta, executes:
make test nose-cover benchmark
Et recomano anar a «etc / development.ini» i canviar «limit-as = 120" a "limit-as = 512». Es tracta de quants MB de RAM es «menjarà» uWSGI, de manera que en el futur podria augmentar-se de ser necessari.
Finalment, cada vegada que vulguis obrir el teu servidor, n'hi hauria prou amb localitzar-te a la carpeta del teu projecte i executar:
make uwsgi
Sobre les altres qüestions ... Per defecte, el servidor està programat per funcionar en localhost. Si vols fer-ho públic, perquè ja ho tens llest i vols usar-lo en un servidor físic en producció, n'hi hauria prou amb obrir «src / app.py» i localitzar el següent: make_server ( », 8080, main). El primer paràmetre és una cadena buit, no? Doncs aquí poses la IP del teu servidor. El segon paràmetre és el port que vulguis fer servir, que per defecte està en 8080.
Finalment, el que comentes de retornar alguna cosa que no sigui un HTML, és clar que es pot! En la documentació t'expliquen com retornar de tot: https://pythonhosted.org/wheezy.web/userguide.html#web-handlers
Una salutació! Qualsevol cosa em dius;).
Moltes gràcies Lajto, deverdad em vas aclarir els dubtes, havia intentat amb django però com et vaig comentar no sóc enginyer en sistemes i django crec que porta molt més del que necessitava, utilitzeu wheezy.web per provar una aplicació en android i comunicar-ho amb un servidor . Una cosa molt senzill però bastant ràpid i pràctic. Escolta una pregunta mes, fa poc vaig veure que s'armo un gran enrenou amb http / 2 com es en què protocol treballa wheezy.web ?, puc fer un servidor que utilitzeu el http / 2 wheezy.web? O recomiendame un llibre, bloc, tutorial que aquest en illes que em pugui explicar sobre tot l'assumpte de xarxes i comunicacions. Denuevo gràcies.
Hola de nou Ulisses ^^.
HTTP / 2 és molt recent i fins d'aquí a 1 any no començarà a ser adoptat seriosament, de manera que no et molestis a això :). Si vols seguretat, usa HTTPS i ja està.
No estic segur de què fa servir Wheezy Web per l'HTTP, així que suposo que serà WSGI.
Una salutació!
Per cert, una coseta de res. En algunes distros apareix un missatge de WARNING sobre .python-eggs. No passa res si apareix, però si us resulta molest podeu llevar amb:
chmod go = ~ / .python-eggs
Salutacions!
Estic utilitzant Django, però revisaré la documentació per veure que tal. Gràcies per compartir. Salutacions
Es pot usar des windows !!!, hi ha algun tutorial ??
Gràcias
Hola tenim molta experiència amb Python. Em sembla que estan remant en contra del corrent. El millor que s'ha inventat per a aquest llenguatge és Django. Poden fer una estadístiques i consultar a centenars de programadors de tot el món, els donarà més d'un 80%, la majoria no s'equivoca. Si remen o neden en contra del corrent, tard o d'hora s'ofegaran ...