CherryPy
Utvecklare | CherryPy team |
---|---|
Initial release | juni 2002 |
Stabil frisättning | |
Förvar | CherryPy Repository |
Skrivet i | Pytonorm |
Operativ system | Cross-plattform |
Typ | Webbapplikationsramverk |
Licens | BSD-licens |
Hemsida |
CherryPy är ett objektorienterat ramverk för webbapplikationer som använder programmeringsspråket Python . Den är designad för snabb utveckling av webbapplikationer genom att omsluta HTTP -protokollet men håller sig på en låg nivå och erbjuder inte mycket mer än vad som definieras i RFC 7231.
CherryPy kan vara en webbserver själv eller så kan man starta den via vilken WSGI- kompatibel miljö som helst. Den hanterar inte uppgifter som mall för utdatarendering eller backend-åtkomst. Ramverket är utbyggbart med filter, som anropas vid definierade punkter i begäran/svarsbehandlingen.
Pythonic gränssnitt
Ett av målen för projektets grundare, Remi Delon, var att göra CherryPy så pytoniskt som möjligt. Detta gör att utvecklaren kan använda ramverket som vilken vanlig Python-modul som helst och glömma (ur teknisk synvinkel) att applikationen är för webben.
Till exempel skulle det gemensamma Hello World- programmet med CherryPy 3 se ut så här:
importera cherrypy klass HelloWorld : def index ( self ): returnera "Hello World!" index . exponerad = True cherrypy . snabbstart ( HelloWorld ())
Funktioner
CherryPy implementerar:
- En HTTP/1.1- kompatibel, WSGI trådpoolad webbserver. Vanligtvis tar CherryPy själv bara 1–2 ms per sida.
- Stöd för alla andra WSGI-aktiverade webbservrar eller adapter, inklusive Apache , IIS , lighttpd , mod_python , FastCGI , SCGI och mod_wsgi .
- En inbyggd mod_python- adapter.
- Flera HTTP-servrar (t.ex. möjlighet att lyssna på flera portar).
- Ett instickssystem CherryPy plugins kopplas in i händelser inom serverprocessen — i serverstart, serveravstängning, server avslutas, etc. — för att köra kod som måste köras när servern startar eller stängs av.
- Inbyggda verktyg för cachelagring , kodning , sessioner , auktorisering , statiskt innehåll och annat. CherryPy- verktyg kopplas in i händelser inom förfrågningsprocessen . Närhelst CherryPy-servern tar emot en begäran, finns det en specifik uppsättning steg som den går igenom för att hantera den begäran. Sidhanterare är bara ett steg i processen. Verktyg tillhandahåller också ett syntax- och konfigurations-API för att slå på och av dem för en specifik uppsättning hanterare.
- Ett konfigurationssystem för utvecklare och deployers. CherryPy-distributioner kan konfigureras på plats, på applikations- och kontrollnivå, genom Python-ordböcker, konfigurationsfiler och öppna filobjekt.
- En komplett testsvit för kärnfunktionalitet och tillhörande ramverk som kan användas för att testa CherryPy-applikationer.
- Inbyggd profilering sedan v2.1, täckning och teststöd.
CherryPy tvingar dig inte att använda en specifik objektrelationell mappare (ORM), mallspråk eller JavaScript-bibliotek .
Kan användas med CherryPy
- Rutter — en Python-omimplementering av Ruby on Rails ruttsystem för att mappa webbadresser till kontroller/åtgärder och generera webbadresser.
Objektrelationella kartläggare
- SQLAlchemy — en databasbackend och ORM för Python-applikationer. TurboGears 2.x använder CherryPy som server och SQLAlchemy som standard-ORM.
- SQLObject — en populär ORM för att tillhandahålla ett objektgränssnitt till en databas. Stöder ett antal vanliga databasbackends: inkluderade i distributionen är MySQL , PostgreSQL , SQLite , Sybase SQL Server , MaxDB , Microsoft SQL Server och Firebird . TurboGears 1.x använder CherryPy som server och SQLObject som ORM.
- Storm — ORM från Canonical Ltd. (tillverkare av Ubuntu )
- Dejavu — en programvara för offentlig egendom , trådsäker ORM för Python-applikationer
- MongoEngine — En ODM för anslutning till MongoDB .
Mallar för språk
- Mako — ett mallbibliotek skrivet i Python, användbart med ett enkelt CherryPy-verktyg.
- Cheetah — en mallmotor med öppen källkod och verktyg för kodgenerering, skriven i Python.
- CherryTemplate — ett mallspråk för CherryPy.
- Genshi — ett kraftfullt XML-mallspråk.
- Jinja — ett mallspråk för allmänt bruk. CherryPy har ett verktyg för att använda Jinja-mallar.
- Kid — ett enkelt mallspråk för XML-baserade vokabulärer skrivna i Python. TurboGears 1.x använder CherryPy som server och Kid som frontend.
CherryPy wiki hjälper dig att välja ett mallspråk.
Produkter som använder CherryPy
- TurboGears — CherryPy 2.x är en huvudkomponent i TurboGears 1.x.
- Splunk Enterprise - CherryPy 3.1.2