Alussa Facebook on rakennettu PHP ja MySQL, mutta liikenteen ja koko verkon lisääntynyt, joten ei sen vaatimukset paremmin ja nopeammin toimituksen sisältöä reaaliajassa.
Tämä johti Facebook Joukkueen kaivaa muita teknologioita ja kieliä ulkopuolella PHP, ja yhtiö muuttui pian sen nähtävyyksiä Python, ohjelmointikieli avulla Google rakentaa sen hakukoneen.
ponnistelut joukkue johtivat tuotetta kutsutaan Tornado, Python puitteet erityisesti suunniteltu toimimaan raaka HTTP-yhteyksiä yksinkertaisesti asynkroninen estoton tavalla.
Tornado innostui muita työkaluja, kuten Web.py ja Googlen webapp, mutta sisältää myös lisätoimintoja samoin.
Keskiössä koko kehyksen asuu tehokas HTTP-palvelin, jota korostavat sarja moduuleja käsitellä i18n sisältöä, merkkijonojen käsittely, tuotanto sukupolvi, asynkroninen toiminta, kolmannen osapuolen koodia, lokit, ja niin edelleen.
lisäksi Cassandra , Tornado on yksi Facebookin menestyneimmistä avoin hankitaan sovelluksia tasalla.
Mikä on uusi tässä julkaisussa :
- Uusi moduulit: tornado.locks ja tornado.queues
Mikä on uusi versio 4.2:
- Uusi moduulit: tornado.locks ja tornado.queues
Mikä on uusi versiossa 4.1:
- tornado.web.stream_request_body sisustusarkkitehti mahdollistaa suurten tiedostojen olla latasi rajoitettu muistin käyttöä.
- Coroutines ovat nyt nopeampia ja niitä käytetään laajasti koko Tornado itse. Enemmän menetelmiä nyt palata Futures, mukaan lukien useimmat iostream menetelmät ja RequestHandler.flush.
- Monet käyttäjän ohittaa menetelmiä voivat nyt palata tulevaisuus virtauksen ohjaus.
- HTTP liittyviä koodi on nykyisin jaettu tornado.httpserver, tornado.simple_httpclient ja tornado.wsgi moduulit, jolloin tukea ominaisuuksia, kuten lohkotussa ja gzip koodaus johdonmukaisempaa. HTTPServer nyt käyttää uutta edustaja rajapintoja määritellään tornado.httputil lisäksi vanhan yhden soittopyynnön käyttöliittymä.
- Uusi moduuli tornado.tcpclient luo TCP-yhteyksiä ei-esto DNS, SSL kättely, ja tukea IPv6.
Mikä on uusi versiossa 3.2.2:
- XSRF merkki on nyt koodattu satunnainen naamio kullakin pyynnöstä. Tämä tekee siitä turvallisen sisällyttää pakatun sivuilla ilman alttiita rikkomisen hyökkäys. Tämä koskee useimpia sovelluksia, jotka käyttävät sekä xsrf_cookies ja gzip vaihtoehtoja (tai on gzip soveltamat valtakirjalla).
- Jos Tornado 3.2.2 ajetaan samanaikaisesti kuin vanhemmat versiot samalla toimialueella, on jonkin verran mahdollisuuksia ongelmia eri evästeen versiot. Sovellus asetus xsrf_cookie_version = 1 voidaan käyttää siirtymäkauden ajan tuottaa vanhemmat evästeen muodossa uudempia palvelimia.
- tornado.platform.asyncio on nyt yhteensopiva trollius versio 0.3.
Mitä uutta strong> versiossa 3.2.1:
- allekirjoitti-arvo käyttämässä muodossa RequestHandler.set_secure_cookie ja RequestHandler.get_secure_cookie on muuttunut olla turvallisempi. Tämä on häiritsevä muutos. Secure_cookie toiminnot ottaa uusi versio parametrit tukemaan siirtymistä evästeen muodoissa.
- Uusi evästeen muoto korjaa haavoittuvuuden, joka voi olla läsnä sovelluksia, jotka käyttävät useita evästeitä ilmoitettaessa yksi evästeen on etuliite nimen toiseen.
- minimoimaan häiriöt, evästeet vanhemmassa muodossa hyväksytään oletuksena niiden voimassaolon päättymiseen saakka. Sovellukset, jotka voivat olla alttiita voi hylätä kaikki evästeet vanhemmassa muodossa johtamalla min_version = 2 RequestHandler.get_secure_cookie.
Mikä on uusi versiossa 3.2:
- Uusi sovellus asettamalla default_handler_class voidaan helposti perustaa mukautettuja 404 sivua.
- Uusi sovellus asetukset autoreload, compiled_template_cache, static_hash_cache, ja serve_traceback voidaan käyttää ohjaamaan yksittäisiä näkökohtia debug tilassa.
- Uusi menetelmiä RequestHandler.get_query_argument ja RequestHandler.get_body_argument ja uusia määritteitä HTTPRequest.query_arguments ja HTTPRequest.body_arguments päästämään perusteluja ilman intermingling jotka tulevat kyselymerkkijonossa niillä, pyynnön elin.
- RequestHandler.decode_argument ja liittyvät menetelmät nyt nostaa HTTPError (400) sijasta UnicodeDecodeError kun väitettä ei voida dekoodata.
- RequestHandler.clear_all_cookies nyt hyväksyy verkkotunnus ja polku argumentteja, kuten clear_cookie.
- Nyt on mahdollista määrittää käsittelijät nimityksen käytettäessä URLSpec luokka.
- Sovelluksen nyt hyväksyy 4-tuples määrittää nimi parametri (joka aiemmin edellytti rakentamiseen URLSpec kohde sijasta monikko).
- Fixed virheellinen virheilmoituksen kun ohjaaja menetelmiä palauttaa muu arvo kuin Ei tai tulevaisuudessa.
- Poikkeukset ei enää kirjautuneena kahdesti käytettäessä sekäasynchronous ja @ gen.coroutine.
Mikä on uusi versiossa 3.1:
- Monet viittaus syklit on hajonnut koko paketti, jolloin tehokkaamman roskien keräys on CPython.
- Silenced jotkut lokisanomat kun yhteydet avataan ja suljetaan välittömästi (eli porttiskannaukset), tai muissa tilanteissa, jotka liittyvät suljetun yhteyksiä.
- Erilaisia pieniä speedups: HTTPHeaders tapauksessa normalisointi, UIModule proxy esineitä, precompile jotkut regexes.
Mikä on uusi versiossa 3.0.2:
- tornado.auth.TwitterMixin nyt oletuksena versio 1.1 on Twitter API sijasta versio 1.0, joka on lopetettu 11. kesäkuuta myös nyt käyttää HTTPS puhuessaan Twitteriin.
- Fixed mahdollinen muistivuoto pitkä ketju gen.coroutine tai gen.engine toimintoja.
Mikä on uusi versiossa 3.0:
- `` callback`` väite monia asynkroninen menetelmiä on nyt valinnaisia, ja nämä menetelmät palauttaa `.Future`. `Tornado.gen` moduuli ymmärtää nyt` `Futures``, ja näitä menetelmiä voidaan käyttää suoraan ilman` .gen.Task` kääre.
- Uusi toiminto `.IOLoop.current` palauttaa` .IOLoop` joka on käynnissä nykyisen säikeen (toisin kuin `.IOLoop.instance`, joka palauttaa tiettyyn lanka n (yleensä lankana n) IOLoop.
- Uusi luokka `tornado.netutil.Resolver` tarjoaa asynkronisen rajapinnan DNS.
- Uusi luokka `tornado.process.Subprocess` kietoo` subprocess.Popen` kanssa `.PipeIOStream` pääsy lapsen tiedosto kuvaajat.
- '.IOLoop` nyt on staattinen `Tee & # X3C; .Configurable.configure & # x3e;` menetelmä kuin yksi `.AsyncHTTPClient`, jota voidaan käyttää valitsemaan` .IOLoop` täytäntöönpanon muu kuin oletuksena. * `.IOLoop` Voidaan nyt vaihtoehtoisesti käyttää monotoninen kellon, jos käytettävissä.
Mikä on uusi versiossa 2.4.1:
- Fixed muistivuoto tornado.stack_context että oli erityisesti todennäköisesti pitkän käynnissä @ gen.engine toimintoja.
- tornado.auth.TwitterMixin nyt toimii Python 3.
- Kiinteä vika, jossa IOStream.read_until_close kanssa streaming soittopyynnön joskus siirtää viimeinen kimpale tietojen lopullisen soittopyyntö sijaan streaming soittopyyntö.
Mikä on uusi versiossa 2.4:
- Kiinteät Python 3 bugeja tornado.auth, tornado.locale , ja tornado.wsgi.
- OAuthMixin hyväksyy nyt & quot; OOB & quot; kuten callback_uri.
- OpenIDMixin nyt myös palauttaa claimed_id kenttä käyttäjälle.
- tornado.platform.twisted pysäytysjakso on nyt enemmän yhteensopiva.
- hakkuut kokoonpano käytetty tornado.options on nyt enemmän suvaitsevainen ei-ascii tavu jouset.
Mikä on uusi versio 2.3:
- 'tornado.httpclient.HTTPClient` tukee nyt sama rakentaja Hakusanalla väitteet `AsyncHTTPClient`.
- `` max_clients`` avainsana argumentti `AsyncHTTPClient.configure` nyt toimii.
- 'tornado.simple_httpclient` tukee nyt `` OPTIONS`` ja `` PATCH`` HTTP menetelmiä.
- 'tornado.simple_httpclient` on parempi noin sulkemalla pistorasiat eikä jätetä niitä roskien keräys.
- 'tornado.simple_httpclient` oikein tarkistaa SSL-varmenteita URL sisältävät IPv6 literaaleja (Tämä bugi vaikuttaa Python 2.5 ja 2.6).
- 'tornado.simple_httpclient` enää sisältää perustiedot auth valtakirjat `` Host`` otsikon kun nämä valtakirjojen uutetaan URL.
- 'tornado.simple_httpclient` enää muuttaa soittajan toimittama otsikon sanakirja, joka aiheutti ongelmia Seuraavat ohjaukset.
- 'tornado.curl_httpclient` tukee nyt SSL varmenteita (käyttäen samoja `` client_cert`` ja `` client_key`` väitteet kuin `tornado.simple_httpclient`.
Mikä on uusi versiossa 2.2.1:
- tietoturvapäivityksiä:
- 'tornado.web.RequestHandler.set_header` nyt oikein sanitizes tuloarvojen suojaamaan otsikon injektio, vastaus halkaisu, jne. (Se on aina yrittänyt tehdä tätä, mutta tarkistus oli virheellinen). Huomaa, että ohjaa, todennäköisin lähde sellaiset viat, suojataan erillisellä tarkistaa `RequestHandler.redirect`.
- Korjauksia:
- värilliset hakkuut kokoonpano `tornado.options` on yhteensopiva Python 3.2.3 (ja 3.3).
Mikä on uusi versio 2.2:
- Päivitetty ja laajennettu WebSocket tukea.
- Parannettu yhteensopivuus Twisted / Tornado silta.
- Viestipohja virheet nyt tuottaa paremmin pino jälkiä.
- Parempi Poikkeamien käsittely `tornado.gen`.
Mikä on uusi versiossa 2.1.1:
- Korjauksia:
- Kiinteät käsittely suljettu yhteyksiä `` epoll`` (eli Linux) `` IOLoop``. Aiemmin suljettu yhteydet voitaisiin sulkea liian aikaisin, joka useimmiten ilmenee & quot; Stream on suljettu & quot; poikkeuksia `` SimpleAsyncHTTPClient``.
- Kiinteät tapaus, jossa chunked vasteita voitiin lopettaa ennenaikaisesti, mikä katkaistu teho.
- `` IOStream.connect`` raportoi virheistä johdonmukaisemmin kautta hakkuiden ja lähellä soittopyynnön (tämä vaikuttaa esimerkiksi yhteydet localhost FreeBSD).
- `` IOStream.read_bytes`` jälleen hyväksyy sekä `` int`` ja `` long`` perustelut.
- `` PeriodicCallback`` enää kulkee toistuvasti, kun `` IOLoop`` toistojen loppuun nopeammin kuin päätöslauselman `` time.time () `` (lähinnä ongelma Windows).
Mikä on uusi versiossa 2.1.0:
- DigiNotar on poistettu oletuksena CA-varmenteet tiedosto käyttämä `SimpleAsyncHTTPClient`
- helpottamiseksi edistyksellisiä moniajoa skenaarioita, `` HTTPServer`` on uusi menetelmä `` add_sockets``, ja pistorasia-aukko koodi on saatavana erikseen `tornado.netutil.bind_sockets`.
- Tuki turvallisen evästeet kirjoittanut ennen 1.0 vapauttaa Tornado on poistettu.
- Windows tukea on parannettu.
Mikä on uusi versiossa 2.0.0:
- Suuret muutokset:
- Malli lähdön automaattisesti karannut oletuksena.
- Oletuksena AsyncHTTPClient täytäntöönpano on nyt simple_httpclient.
- Python 3.2 on nyt tuettu.
- Taaksepäin yhteensopivuus:
- Viestipohja autoescaping on oletusarvoisesti käytössä. Sovellukset Päivittäminen aiemmasta vapauttamaan Tornado on joko poistaa autoescaping tai mukauttaa malleja työskennellä sen kanssa. Useimmissa sovelluksissa, yksinkertaisin tapa tehdä tämä on siirtää autoescape = Ei mitään voit Application rakentaja.
- Sovellukset, jotka haluavat jatkaa curl_httpclient sijasta simple_httpclient voi tehdä soittamalla AsyncHTTPClient.configure (& quot; tornado.curl_httpclient.CurlAsyncHTTPClient & quot;) alussa prosessin. Käyttäjät Python 2,5 luultavasti halua käyttää curl_httpclient kuin simple_httpclient tukee vain SSL Python 2.6 +.
- Python 3 yhteensopivuus mukana monia muutoksia koko codebase, joten käyttäjiä kehotetaan sovellusten testaamista perusteellisemmin kuin tavallista päivitettäessä tämän tiedotteen.
- Muut muutokset versiossa 4.1:
- Mallit tukevat useita uusia direktiivejä: - {% autoescape ...%} ohjata karkaaminen käyttäytyminen - {% raaka ...%} Lisäämättömässä lähtö - {% moduuli ...%} soitosta UIModules * {% moduuli malli (polku, ** kwargs)%} voidaan nyt käyttää soittaa toiseen malliin, jossa riippumaton nimiavaruuteen.
- Kaikki iostream kutsuja ovat nyt ajaa suoraan IOLoop kautta add_callback.
- HTTPServer tukee nyt IPv6 jos saatavilla. Voit poistaa, siirtää perhe = socket.AF_INET kohteeseen HTTPServer.bind ().
- HTTPClient tukee nyt IPv6, konfiguroitavissa allow_ipv6 = bool on HTTPRequest. allow_ipv6 oletuksena vääriä päälle simple_httpclient ja totta curl_httpclient.
- RequestHandlers voi käyttää muuta kuin UTF-8 kyselyparametreja pakottavilla decode_argument ().
- Suorituskyky parannuksia, erityisesti sovelluksia, jotka käyttävät paljon IOLoop aikakatkaisut.
- HTTP OPTIO menetelmä ei enää edellytä XSRF merkki.
- JSON ulostulo (RequestHandler.write (dict)) vahvistetaan nyt Content-Type sovellus / JSON.
- ETAG laskenta voidaan nyt räätälöidä tai poistaa pakottavilla RequestHandler.compute_etag.
- USE_SIMPLE_HTTPCLIENT ympäristömuuttuja ei enää tueta. Käytä AsyncHTTPClient.configure sijaan.
Mikä on uusi versiossa 1.2.1:
- Tämä tiedote sisältää vain kaksi pieniä muutoksia suhteessa versio 1.2:
- FacebookGraphMixin on päivitetty toimimaan hiljattain muutoksen Facebook API.
- Juoksu & quot; setup.py asentaa & quot; enää yrittää automaattisesti asentaa pycurl. Tämä ei toimi hyvin alustoilla jossa paras tapa asentaa pycurl on kautta jotain apt-get sijaan easy_install. Tämä on tärkeä päivitys, jos käytät FacebookGraphMixin, mutta muuten se voidaan turvallisesti jättää huomiotta.
Mikä on uusi versiossa 1.2.0:
- Tämä tiedote sisältää taaksepäin-yhteensopimattomia turvallisuus muutos versio 1.1.1.
- Voit avoimesti korvata tornado.httpclient.AsyncHTTPClient tämän uuden täytäntöönpanoon, voit määrittää muuttujan USE_SIMPLE_HTTPCLIENT = 1
- Pyydä puunkorjuu on nyt tapahtuu Application sijasta RequestHandler. Kirjautumisen käyttäytyminen voidaan räätälöidä joko pakottavista Application.log_request vuonna alaluokka tai viemällä log_function kuin pyyntöä, jossa.
Mikä on uusi versiossa 1.1.1:
- Tornado 1.1.1 on taaksepäin-yhteensoveltumaton turvallisuus päivitys, joka korjaa XSRF haavoittuvuutta.
Mikä on uusi versio 1.1:
- Muutokset:
- RequestHandler.async_callback ja liittyvät toiminnot muihin luokkiin ei enää tarvita useimmiten (vaikka se on vaaraton jatkaa
- käyttää niitä). Uncaught poikkeuksia nyt aiheuttaa pyynnön sulkea myös soittopyynnön. Jos olet utelias, miten tämä toimii, katso uusi tornado.stack_context moduuli.
- Uusi tornado.testing moduuli sisältää tukea yksikkötestaus asynkronista IOLoop-pohjainen koodi.
- AsyncHTTPClient on kirjoitettu uudelleen (uusi toteutus oli saatavana AsyncHTTPClient2 Tornado 1,0; molemmat nimet ovat tuettuja taaksepäin
- yhteensopivuus).
- tornado.auth moduuli on ollut useita päivityksiä, mukaan lukien tuki OAuth 2.0 ja Facebook Graph API, ja päivität Twitter ja Google tukea OAuth 1.0a.
- WebSocket moduuli on palannut ja tukee uusimman version (76) WebSocket protokollaa. Huomaa, että tämä moduuli käyttöliittymä eroaa WebSocket moduuli, joka ilmestyi ennen 1.0 versiot Tornado.
- Uusi menetelmä RequestHandler.initialize () voidaan ohittaa sisään alaluokkia käsittelyn helpottamiseksi perusteluja URLSpecs. Sekvenssi menetelmiä kutsutaan alustuksen aikana dokumentoidaan http://tornadoweb.org/documentation#overriding-requesthandler-methods
- get_argument () ja siihen liittyvät menetelmät nyt työskennellä PUT pyyntöjen lisäksi POST.
- httpclient moduuli tukee nyt HTTP valtakirjoja.
- Kun HTTPServer ajetaan SSL-tilasta, SSL kättelyn on nyt estoton.
- Monet pienemmät korjauksia ja asiakirjat päivitykset
- taaksepäin-yhteensopivuus muistiinpanot:
- Vaikka useimmat käyttäjät Tornado ei pitäisi käsitellä stack_context moduuli suoraan käyttäjät työntekijän kierre altaat ja vastaavia Rakenteet voivat joutua käyttämään stack_context.wrap ja / tai NullContext välttämiseksi muistivuotoja.
- Uusi AsyncHTTPClient edelleen toimii libcurl versio 7.16.x, mutta se toimii paremmin, kun sekä libcurl ja pycurl ovat vähintään versio 7.18.2.
- OAuth liiketoimia aloitettiin aiemmat versiot auth moduulia ei voi suorittaa uuden moduulin. Tämä koskee vain alkuperäisen luvan prosessia; kun valtuutettu merkki myönnetään, että merkki toimii joko versiota.
vaatimukset :
- Python 2.6 tai uudempi
Kommentteja ei löytynyt