Commits

Anonymous committed 7161025

Changed page WhatsNewIn31

Comments (0)

Files changed (1)

WhatsNewIn31.wiki

 You can read all about the Bus, and the builtin Plugins, at WebSiteProcessBus.
 
 
+== cherryd ==
+
+There's a new "cherryd" daemon script! This can save a *lot* of boilerplate in your app startup script.
+
+{{{
+Usage: cherryd [options]
+
+Options:
+  -h, --help            show this help message and exit
+  -c CONFIG, --config=CONFIG
+                        specify config file(s)
+  -d                    run the server as a daemon
+  -e ENVIRONMENT, --environment=ENVIRONMENT
+                        apply the given config environment
+  -f                    start a fastcgi server instead of the default HTTP
+                        server
+  -i IMPORTS, --import=IMPORTS
+                        specify modules to import
+  -p PIDFILE, --pidfile=PIDFILE
+                        store the process id in the given file
+}}}
+
 == Request and Response creation ==
 
 In 3.0, the Engine would create the Request and Response objects. In 3.1, the Application object has that responsibility via its get_serving and release_serving methods. This makes the request object overridable per-app, and also removes the dependency on the engine object.
 
 The wsgiserver module is now more extendable in a couple of ways. Most visibly, the thread pool is now a delegate, so you can replace the builtin one if you need fancy thread pooling (or none at all). The ability to dispatch to multiple apps has also been moved out into its own piece of middleware (WSGIPathInfoDispatcher), which is replaceable. It's also not loaded if you're only deploying one app, so you don't pay the performance penalty of multiple apps.
 
+CherryPy now works with '''Google App Engine'''! The wsgiserver is now imported lazily-enough to avoid illegal imports of the socket module.
 
-== 4xx and 5xx handlers ==
+== Custom 4xx and 5xx handlers ==
 
 HTTP responses between 400 and 599 can now be generated by custom functions you provide. See help(cherrypy.request.[wiki:ErrorsAndExceptions#AnticipatedHTTPresponses error_page]) for more information.
 
-
 == !LogManager ==
 
 There's a new reopen_files method on the !LogManager object. This helps graceful restarts.
 
+You can also set the access file log format more easily now. There's a new 'log.access_log_format' config option--see the code for complete details on the available formats.
+
+CherryPy 3.1 also changed its access log format slightly to be more secure and stable. Like Apache started doing in 2.0.46, non-printable and other special characters are escaped using \xhh sequences, where hh stands for the hexadecimal representation of the raw byte. Exceptions from this rule are " and \, which are escaped by prepending a backslash, and all whitespace characters, which are written in their C-style notation (\\n, \\t, etc). It's a lot like repr().
 
 == Virtual Hosts ==
 
 
 We hope to add little improvements to the scaffolding application as we go, to help enable good CherryPy code and avoid common pitfalls. So feel free to recommend some!
 
-== Custom Errors ==
-
-Returning custom responses for non-2xx HTTP codes is MUCH easier now. See http://www.cherrypy.org/wiki/ErrorsAndExceptions#AnticipatedHTTPresponses.