Asynchronous Component based Event Application Framework
circuits is a Lightweight Event driven and Asynchronous Application Framework for the Python Programming Language with a strong Component Architecture. circuits also includes a lightweight, high performance and scalable HTTP/WSGI web server (with some similar features to CherryPy) as well as various I/O and Networking components.
circuits has a clean architecture and has no required external dependencies. It has a small footprint and delivers a powerful set of features for building large, scalable, maintainable applications and systems. circuits comes with a suite of standard components that can be quickly utilized to create applications from a simple tool to a complex distributed web application.
circuits was created by and is primarily maintained by James Mills
- circuits.core.workers: Add import of cpu_count/cpuCount as cpus from the respective multiprocessing/processing modules
- circuits.web.app: Two apps newly added. WebConsole and MemoryMonitor See: http://codepad.org/iQwBgfdM for an example
- circuits.core.debugger: If the Debugger isn’t logging to a file or logger
(we’re logging to sys.stderr) it’s useful to restrict the output for
common terminal widths of 80.
- circuits.core.debugger: Make chopping long lines when logging to sys.stderr optional with kwarg chop (Default: False).
- circuits.web.errors: Make traceback available on the HTTPError Event Object as self.traceback
- circuits.web.main: Only start multiple processes if multiprocessing is actually available
- circuits.core.pollers: Ignore IOError of EINTR (4)
- circuits.app: Fixed a bug with loading a Logger instance and loading the Config instance (``circuits.app needs`` to be refactored)
- examples/web/jsonserializer.py: New example showing how to build a simple request filter that intercepts the return values of request handlers before they get added to the response body
- examples/web/filtering.py: Fixed example
- Fixed several Python 2.5 incompatibilities.
- circuits.web.wsgi: Fixed a bug with writing to the request.body. (Forgot to rewing the StringIO instnace after writing to it)
- Fixed documentation generation
circuits.core.manager: Deprecated the use of the sleep parameter/argument in Manager.start(...) and Manager.run(...) in favor of sleeping for the specified circuits.core.manager.TIMEOUT when/iif there are no tick functions to process (eg: Timer, pollers, etc)
- – If aftering processing Tick Functions there are no resulting
events to process then a sleep will occur for circuits.core.TIMEOUT seconds.
circuits.core.Manager: Call self.stop right at the end of normal termination for script-like systems (eg: examples/cat.py)
circuits.core.Manager: If a KeyboardInterrupt or SystemExit exception is raised during a Tick Function, then re-raise it.
- circuits.web.http: Fixed a bug with HTTP streaming
- circuits.io: Fixed exceptions not being caught during shutdown
- tests.core.test_bridge: Fixed and passing again :)
- circuits.web.wsgi: Fixed a bug discovered when trying to deploy a circuits.web WSGI Application using the uwsgi server. In the case of an empty request body from the client being passed thorugh uwsgi to circuits.web - No Content-Length would be provided, but also any attempt to read from wsgi.input would block causing uwsgi to timeout
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size circuits-1.3.3-py2.5.egg (371.9 kB)||File type Egg||Python version 2.5||Upload date||Hashes View|
|Filename, size circuits-1.3.3-py2.6.egg (373.2 kB)||File type Egg||Python version 2.6||Upload date||Hashes View|
|Filename, size circuits-1.3.3.tar.gz (462.7 kB)||File type Source||Python version None||Upload date||Hashes View|