/usr/share/doc/python-gevent-doc/examples/geventsendfile.py is in python-gevent-doc 1.2.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | """An example how to use sendfile[1] with gevent.
[1] http://pypi.python.org/pypi/py-sendfile/
"""
# pylint:disable=import-error
from errno import EAGAIN
from sendfile import sendfile as original_sendfile
from gevent.socket import wait_write
def gevent_sendfile(out_fd, in_fd, offset, count):
total_sent = 0
while total_sent < count:
try:
_offset, sent = original_sendfile(out_fd, in_fd, offset + total_sent, count - total_sent)
#print('%s: sent %s [%d%%]' % (out_fd, sent, 100*total_sent/count))
total_sent += sent
except OSError as ex:
if ex.args[0] == EAGAIN:
wait_write(out_fd)
else:
raise
return offset + total_sent, total_sent
def patch_sendfile():
import sendfile
sendfile.sendfile = gevent_sendfile
|