I begynnelsen Facebook ble bygget ved hjelp av PHP og MySQL, men som trafikken og størrelsen på nettverket økt, så gjorde sine krav for en bedre og raskere levering av innhold i sanntid.
Dette førte Facebook-teamet å fordype deg i andre teknologier og språk utenfor PHP, og selskapet snart viste det severdigheter å Python, et programmeringsspråk som brukes av Google til å bygge sin søkemotor.
Den innsatsen til teamet resultert i et produkt som heter Tornado, en Python rammeverk spesielt utviklet for bruk med rå HTTP-tilkoblinger på en enkel asynkron ikke-blokkerende måte.
Tornado ble inspirert av andre verktøy som Web.py og Googles webapp, men inneholder også ekstra funksjoner også.
I sentrum av hele rammeverket ligger en kraftig HTTP-server, som forsterkes av en pakke med moduler for å håndtere i18n innhold, streng manipulasjon, utgang generasjon, asynkrone operasjoner, tredjeparts kode, logger, og så videre.
I tillegg til Cassandra , er Tornado en av Facebooks mest vellykkede åpne hentet søknader til dato.
Hva er nytt i denne utgivelsen :
- Nye moduler: tornado.locks og tornado.queues
Hva er nytt i versjon 4.2:
- Nye moduler: tornado.locks og tornado.queues
Hva er nytt i versjon 4.1:
- Den tornado.web.stream_request_body dekoratør kan store filer til å være lastet med begrenset minnebruk.
- Coroutines er nå raskere og brukes mye i hele Tornado selv. Flere metoder nå tilbake Futures, inkludert de fleste iostream metoder og RequestHandler.flush.
- Mange brukerstyrt metoder er nå lov til å returnere en framtid for flytkontroll.
- HTTP-relatert kode er nå delt mellom tornado.httpserver, tornado.simple_httpclient og tornado.wsgi moduler, noe som gjør støtte for funksjoner som du delvis og gzip koding mer konsekvent. Httpserver bruker nå nye delegere grensesnitt definert i tornado.httputil i tillegg til sin gamle single-tilbakeringing grensesnitt.
- Ny modul tornado.tcpclient skaper TCP forbindelser med ikke-blokkerende DNS, SSL håndtrykk, og støtte for IPv6.
Hva er nytt i versjon 3.2.2:
- Den XSRF token er nå kodet med en tilfeldig maske på hver forespørsel. Dette gjør det trygt å inkludere i komprimerte sider uten å være sårbare for BRUDD angrepet. Dette gjelder de fleste applikasjoner som bruker både xsrf_cookies og gzip alternativer (eller har gzip påføres med en proxy).
- Hvis Tornado 3.2.2 kjøres samtidig som eldre versjoner på samme domene, det er noe potensiale for problemer med de forskjellige cookie versjoner. Programinnstillingen xsrf_cookie_version = 1 kan brukes i en overgangsperiode for å generere den eldre cookie-format på nyere servere.
- er tornado.platform.asyncio nå kompatibel med trollius versjon 0.3.
Hva er nytt i versjon 3.2.1:
- Den signerte lige formatet som brukes av RequestHandler.set_secure_cookie og RequestHandler.get_secure_cookie har endret seg til å bli mer sikker. Dette er en forstyrrende endring. De secure_cookie funksjoner ta nye versjonen parametere for å støtte overganger mellom cookie formater.
- Den nye cookie format løser et sikkerhetsproblem som kan være til stede i programmer som bruker flere cookies der navnet på en cookie er et prefiks på navnet til en annen.
- For å minimere avbrudd, vil kapsler i det gamle formatet bli akseptert som standard til de utløper. Programmer som kan være sårbare kan avvise alle cookies i det gamle formatet ved å sende min_version = 2 til RequestHandler.get_secure_cookie.
Hva er nytt i versjon 3.2:
- Nytt program innstilling default_handler_class kan brukes til å enkelt sette opp egendefinerte 404 sider.
- Ny programinnstillinger Autoreload, compiled_template_cache, static_hash_cache, og serve_traceback kan brukes til å styre enkelte aspekter av debug-modus.
- Ny metoder RequestHandler.get_query_argument og RequestHandler.get_body_argument og nye attributter HTTPRequest.query_arguments og HTTPRequest.body_arguments gi tilgang til argumenter uten intermingling de fra søkestrengen med de fra forespørselen.
- RequestHandler.decode_argument og relaterte metoder nå heve en HTTPError (400) i stedet for UnicodeDecodeError når argumentet ikke kan dekodes.
- RequestHandler.clear_all_cookies aksepterer nå domene og bane argumenter, akkurat som clear_cookie.
- Det er nå mulig å spesifisere handlers ved navn når du bruker URLSpec klassen.
- Application aksepterer nå 4-tupler å angi navnet parameter (som tidligere var nødvendig å bygge en URLSpec objekt i stedet for et tuppel).
- Fast feil feilmelding når fører metoder returnere en annen enn Ingen eller en Future verdi.
- Unntak vil ikke lenger være logget inn to ganger når du bruker bådeasynchronous og @ gen.coroutine.
Hva er nytt i versjon 3.1:
- Mange referanse sykluser har blitt brutt opp gjennom hele pakken, slik at for mer effektiv søppelrydding på CPython.
- Silenced noen loggmeldinger når tilkoblinger er åpnet og lukket med øyeblikkelig virkning (dvs. port skanner), eller andre situasjoner knyttet til lukkede forbindelser.
- En rekke små speedups: HTTPHeaders tilfelle normalisering, UIModule proxy objekter, forkompilerer noen regexes .
Hva er nytt i versjon 3.0.2:
- tornado.auth.TwitterMixin nå standard til versjon 1.1 av Twitter API, i stedet for versjon 1.0 som blir avviklet 11. juni Den bruker også nå HTTPS når du snakker til Twitter.
- Fikset en potensiell minnelekkasje med en lang kjede av gen.coroutine eller gen.engine funksjoner.
Hva er nytt i versjon 3.0:
- `` callback`` argument for mange asynkrone metoder er nå valgfrie, og disse metodene returnere en `.Future`. Den `tornado.gen` modulen forstår nå` `Futures``, og disse metodene kan brukes direkte uten` .gen.Task` wrapper.
- Ny funksjon `.IOLoop.current` returnerer` .IOLoop` som kjører på den aktuelle tråden (i motsetning til `.IOLoop.instance`, som returnerer en bestemt tråd er (vanligvis hovedtråden s) IOLoop.
- Ny klasse `tornado.netutil.Resolver` gir en asynkron grensesnitt til DNS.
- Ny klasse `tornado.process.Subprocess` wraps` subprocess.Popen` med `.PipeIOStream` tilgang til barnets fildeskriptorer.
- `.IOLoop` har nå en statisk` konfigurere & # X3c; .Configurable.configure & # x3e; `metode som den på` .AsyncHTTPClient`, som kan brukes til å velge en `.IOLoop` implementering annet enn misligholde. * `.IOLoop` Kan nå eventuelt bruke en monoton klokke hvis tilgjengelig.
Hva er nytt i versjon 2.4.1:
- Fikset en minnelekkasje i tornado.stack_context som var spesielt sannsynlig med langvarige @ gen.engine funksjoner.
- tornado.auth.TwitterMixin jobber nå på Python tre.
- Fikset en bug hvor IOStream.read_until_close med en streaming-tilbakeringing vil noen ganger passere den siste del av data til den endelige tilbakeringing i stedet for streaming tilbakeringing.
Hva er nytt i versjon 2.4:
- Faste Python 3 bugs i tornado.auth, tornado.locale og tornado.wsgi.
- OAuthMixin nå godtar & quot; OOB & quot; som et callback_uri.
- OpenIDMixin nå også returnerer claimed_id felt for brukeren.
- tornado.platform.twisted avslutningssekvensen er nå mer kompatibelt.
- Den logging konfigurasjon brukes i tornado.options er nå mer tolerant av ikke-ascii byte-strenger.
Hva er nytt i versjon 2.3:
- `tornado.httpclient.HTTPClient` støtter nå den samme konstruktør søkeord argumenter som `AsyncHTTPClient`.
- `` max_clients`` søkeord argument til `AsyncHTTPClient.configure` fungerer nå.
- `tornado.simple_httpclient` støtter nå` `OPTIONS`` og` `PATCH`` HTTP metoder.
- `tornado.simple_httpclient` er bedre om å stenge sine sockets i stedet for å forlate dem for søppelrydding.
- `tornado.simple_httpclient` bekrefter korrekt SSL-sertifikater for nettadresser som inneholder IPv6 konstanter (Denne feilen påvirket Python 2.5 og 2.6).
- `tornado.simple_httpclient` ikke lenger omfatter grunnleggende auth legitimasjon i` `Host`` header når disse legitimasjon er hentet fra nettadressen.
- `tornado.simple_httpclient` ikke lenger modifiserer innringer-leverte header ordbok, som forårsaket problemer når følgende omdirigeringer.
- `tornado.curl_httpclient` støtter nå klient SSL-sertifikater (med samme` `client_cert`` og` `client_key`` argumenter som` tornado.simple_httpclient`.
Hva er nytt i versjon 2.2.1:
- Sikkerhets reparasjoner:
- `tornado.web.RequestHandler.set_header` nå riktig sanitizes inngangsverdier for å beskytte mot header injeksjon, respons splitting, etc. (det har alltid forsøkt å gjøre dette, men sjekken var feil). Merk at omdirigeringer, den mest sannsynlige kilden til slike feil, er beskyttet av en egen sjekk i `RequestHandler.redirect`.
- Feilrettinger:
- Farget logging konfigurasjon i `tornado.options` er kompatibel med Python 3.2.3 (og 3.3).
Hva er nytt i versjon 2.2.
- Oppdatert og utvidet WebSocket støtte
- Forbedret kompatibilitet i Twisted / Tornado bridge.
- Mal feil nå generere bedre stack spor.
- Bedre unntakshåndtering i `tornado.gen`.
Hva er nytt i versjon 2.1.1:
- Feilrettinger:
- Fast håndtering av lukkede forbindelser med `` epoll`` (dvs. Linux) `` IOLoop``. Tidligere kunne lukkede forbindelser bli stengt for tidlig, som oftest manifestert som & quot; Stream er stengt & quot; unntak i `` SimpleAsyncHTTPClient``.
- Fikset en sak der du delvis responser kan bli stengt før tiden, fører til avkortet utgang.
- `` IOStream.connect`` nå rapporterer feil mer konsekvent via logging og det nære tilbakeringing (dette påvirker f.eks tilkoblinger til localhost på FreeBSD).
- `` IOStream.read_bytes`` igjen kan brukes for både `` int`` og `` long`` argumenter.
- `` PeriodicCallback`` ikke lenger går gjentatte ganger når `` IOLoop`` gjentakelser full raskere enn oppløsningen av `` time.time () `` (hovedsakelig et problem i Windows).
Hva er nytt i versjon 2.1.0:
- Diginotar er fjernet fra standard sertifikatorsertifikater fil brukes av `SimpleAsyncHTTPClient`
- For å lette noen avanserte multi-prosess scenarier, `` HTTPServer`` har en ny metode `` add_sockets``, og socket-åpning koden er tilgjengelig separat som `tornado.netutil.bind_sockets`.
- Støtte for sikre cookies skrevet av pre-1.0 utgaver av Tornado er fjernet.
- Windows-støtten er forbedret.
Hva er nytt i versjon 2.0.0:
- Store endringer:
- utgang Mal automatisk rømt som standard.
- Standard AsyncHTTPClient gjennomføringen er nå simple_httpclient.
- Python 3.2 er nå støttet.
- Bakoverkompatibilitet:
- Mal autoescaping er aktivert som standard. Søknader oppgradering fra en tidligere utgave av Tornado må enten deaktivere autoescaping eller tilpasse sine maler for å jobbe med det. For de fleste programmene er den enkleste måten å gjøre dette for å passere autoescape = Ingen av Application konstruktøren.
- Programmer som ønsker å fortsette å bruke curl_httpclient istedenfor simple_httpclient kan gjøre det ved å ringe AsyncHTTPClient.configure (& quot; tornado.curl_httpclient.CurlAsyncHTTPClient & quot;) på begynnelsen av prosessen. Brukere av Python 2.5 vil sannsynligvis ønske å bruke curl_httpclient som simple_httpclient støtter bare SSL på Python 2.6 +.
- Python tre kompatibilitet involverte mange endringer i løpet av kodebase, slik at brukerne oppfordres til å teste sine applikasjoner mer grundig enn vanlig når du oppgraderer til denne versjonen.
- Andre endringer i versjon 4.1:
- Maler støtter flere nye direktiver: - {% autoescape ...%} for å kontrollere rømmer atferd - {% rå ...%} for avkodet utgang - {% modul ...%} for å kalle UIModules * {% module Mal (sti, ** kwargs)%} kan nå brukes til å ringe en annen mal med en uavhengig navnerom.
- Alle iostream callbacks er nå kjøres direkte på IOLoop via add_callback.
- Httpserver støtter nå IPv6 der dette er tilgjengelig. Hvis du vil deaktivere, passerer familie = socket.AF_INET til HTTPServer.bind ().
- HTTPClient støtter nå IPv6, konfigureres via allow_ipv6 = bool på HTTPRequest. allow_ipv6 standard til falsk på simple_httpclient og sant på curl_httpclient.
- RequestHandlers kan bruke en annen koding enn UTF-8 for søkeparametere ved å overstyre decode_argument ().
- Ytelsesforbedringer, spesielt for applikasjoner som bruker mye av IOLoop timeouts.
- HTTP ALTERNATIVER metoden krever ikke lenger en XSRF token.
- JSON-utgang (RequestHandler.write (dict)) setter nå Content-Type til application / JSON.
- ETAG beregning kan nå tilpasses eller deaktiveres ved å overstyre RequestHandler.compute_etag.
- USE_SIMPLE_HTTPCLIENT miljøvariabelen støttes ikke lenger. Bruk AsyncHTTPClient.configure i stedet.
Hva er nytt i versjon 1.2.1:
- Denne versjonen inneholder bare to små endringer i forhold til versjon 1.2:
- FacebookGraphMixin har blitt oppdatert til å jobbe med en nylig endring til Facebook API.
- Running & quot; setup.py installere & quot; vil ikke lenger forsøke å automatisk installere pycurl. Dette var ikke fungerer godt på plattformer hvor den beste måten å installere pycurl er via noe som apt-get istedenfor easy_install. Dette er en viktig oppgradering hvis du bruker FacebookGraphMixin, men ellers er det trygt kan ignoreres.
Hva er nytt i versjon 1.2.0:
- Denne utgivelsen inneholder den bakover uforenlig sikkerhet endring fra versjon 1.1.1.
- Hvis transparent erstatte tornado.httpclient.AsyncHTTPClient med denne nye funksjonen, kan du sette miljøvariabelen USE_SIMPLE_HTTPCLIENT = 1
- Be om logging er nå gjort av Application snarere enn RequestHandler. Logging atferd kan tilpasses enten ved å overstyre Application.log_request i en underklasse eller ved å sende log_function som programinnstillingen.
Hva er nytt i versjon 1.1.1:
- Tornado 1.1.1 er en bakover INKOMPATIBEL sikkerhet oppdatering som løser et XSRF sårbarhet.
Hva er nytt i versjon 1.1:
- Endringer:
- RequestHandler.async_callback og relaterte funksjoner i andre klasser er ikke lenger nødvendig i de fleste tilfeller (selv om det er ufarlig å fortsette
- bruke dem). Uoppfanget unntak vil nå føre til forespørselen om å være stengt selv i en tilbakeringing. Hvis du er nysgjerrig på hvordan dette fungerer, kan du se den nye tornado.stack_context modulen.
- Den nye tornado.testing modulen inneholder støtte for enhetstesting asynkron IOLoop basert kode.
- AsyncHTTPClient har blitt omskrevet (den nye implementeringen var tilgjengelig som AsyncHTTPClient2 i Tornado 1.0, begge navnene støttes for bakover
- kompatibilitet).
- tornado.auth modulen har hatt en rekke oppdateringer, inkludert støtte for OAuth 2.0 og Facebook Graph API, og oppgraderer Twitter og Google støtte til OAuth 1.0a.
- WebSocket modulen er tilbake og støtter den nyeste versjonen (76) av WebSocket protokollen. Merk at denne modulen grensesnitt er forskjellig fra WebSocket modul som dukket opp i pre-1.0-versjoner av Tornado.
- Ny metode RequestHandler.initialize () kan overstyres i undergrupper for å forenkle håndtering argumenter fra URLSpecs. Sekvensen av metoder kalt under initialisering er dokumentert ved http://tornadoweb.org/documentation#overriding-requesthandler-methods
- get_argument () og relaterte metoder nå jobbe på PUT forespørsler i tillegg til POST.
- httpclient modul støtter nå HTTP proxyer.
- Når Httpserver drives i SSL-modus, er SSL håndtrykk nå ikke-blokkerende.
- Mange mindre feilrettinger og dokumentasjonsoppdateringer
- bakoverkompatibilitet notater:
- Mens de fleste brukere av Tornado skal slippe å forholde seg til stack_context modul direkte, brukere av arbeider tråden bassenger og lignende konstruksjoner må kanskje bruke stack_context.wrap og / eller NullContext å unngå minnelekkasjer.
- Den nye AsyncHTTPClient arbeider fortsatt med libcurl versjon 7.16.x, men det fungerer bedre når både libcurl og pycurl er minst versjon 7.18.2.
- OAuth transaksjoner startet under tidligere versjoner av auth modulen kan ikke fullføres under den nye modulen. Dette gjelder kun for den opprinnelige godkjenningsprosessen; når en autorisert token utstedes som token fungerer med begge versjoner.
Krav
- Python 2.6 eller nyere
Kommentarer ikke funnet