-
Notifications
You must be signed in to change notification settings - Fork 1
Cloned from http://blitz.works/butter/file/tip
License
arkaitzj/python-butter
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
======== Butter ======== Butter is a library to integrate some of Linux's low level features into python eg signalfd, eventfd and timerfd. most of these functions are handy if you are looking into creating non-blocking servers, anything using select/poll and derivatives or writing server code Whats Available ---------------- * inotify (Complete support, includes asyncio support) * seccomp (Limited support) * fanotify (Limited support, includes asyncio support) * splice * tee * vmsplice * gethostname * sethostname * mount * umount * pivot_root * getpid (bypasses glibc caching) * getppid (bypasses glibc caching) * eventfd (includes asyncio support) * timerfd (includes asyncio support) * pthread_sigmask (Avalible in python3.x but backported for python2.7) * signalfd (includes asyncio support) Whats Coming ------------- Most of these exist in v0.2 as ctypes code. these are currently being rewritten to use cffi for speed and compatibility with pypy * posix/linux aio (scatter/gather read writes with a completion based API instead of a 'ready' based interface, eg similar to IOCP on windows) Supported Python ----------------- Butter currently supported the following python interpreters * pypy (2.7 and 3.2 python implementations) * cpython 3.4 (required for asyncio support) * cpython 3.x * cpython 2.7 Butter may work on older versions however it has not been tested on anything except the above interpreters and may break without warning Design ------- The 'fd' apis have been designed first as thin wrappers around the underlying kernel syscalls. A File-like object that then uses these syscalls is then made available that obeys the 'event like' interface and is based on the interface provided by File and friends. They are intended to be drop in replacements and be used with the select module Event-like objects +++++++++++++++++++ Event like objects are identical to filelike objects except they have the following extra methods to replace the disabled read/readline/write/writeline functionality * read_event: Return a single event * read_events: Return all cached events OR read all events from the kernel AsyncIO ++++++++ Some syscalls (ones that deal with fd's) have been made to work with the asyncio framework that baecame avalible in python3.4. The asyncio enabled object is named after the normal Event-like object equivlent with '_async' after it, eg Inotify => Inotify_async. These asyncio Eventlike objects are designed to act and behave like the asyncio.Queue object without the ability to write events to the queue (ie they can only be read from and events are injected from the fd as required)
Packages 0
No packages published