summaryrefslogtreecommitdiff
path: root/README
blob: 5e2384cda6415c1f6304fd4641ce642e7122a889 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
=================================
    About
=================================

A python interface to sendfile(2) system call:
http://code.google.com/p/py-sendfile/


=================================
    Install
=================================

$ sudo setup.py install

...or:

$ easy_install py-sendfile


=================================
    Supported platforms
=================================

Linux
OSX
FreeBSD
Dragon Fly BSD
SunOS
AIX (non properly tested)

Python versions from 2.5 to 3.3 by using a single code base.

=================================
    Example usage
=================================

import socket
import errno
from sendfile import sendfile

file = open("somefile", "rb")
sock = socket.socket()
sock.connect(("127.0.0.1", 8021))
offset = 0

while 1:
    try:
        sent = sendfile(sock.fileno(), file.fileno(), offset, 4096)
    except OSError, err:
        if err.errno == errno.EAGAIN:  # retry
            continue
        raise
    else:
        if sent == 0:
            break  # done
        offset += sent


=================================
    Authors
=================================

py-sendfile was originally written by Ben Woolley including Linux and FreeBSD
support.

Later on Niklas Edmundsson took over maintenance and added AIX support.

It's been completely rewritten by Giampaolo Rodola' (g.rodola@gmail.com) who
took over maintenance and added support for:

- Python 3
- OSX
- SunOS
- FreeBSD flag argument
- large files
- Linux header/trailer support via TCP_CORK socket option
- non-blocking sockets