Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/veegee/guv
A fast event loop like gevent for Python 3, built on greenlets and libuv
https://github.com/veegee/guv
Last synced: 3 months ago
JSON representation
A fast event loop like gevent for Python 3, built on greenlets and libuv
- Host: GitHub
- URL: https://github.com/veegee/guv
- Owner: veegee
- License: other
- Created: 2014-11-16T19:39:59.000Z (almost 10 years ago)
- Default Branch: develop
- Last Pushed: 2021-07-17T02:35:33.000Z (over 3 years ago)
- Last Synced: 2024-07-25T04:34:59.061Z (3 months ago)
- Language: Python
- Homepage: http://guv.readthedocs.org/
- Size: 1010 KB
- Stars: 220
- Watchers: 10
- Forks: 13
- Open Issues: 15
-
Metadata Files:
- Readme: README.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - guv - A fast event loop like gevent for Python 3, built on greenlets and libuv (Python)
README
guv = greenlets + libuv
=======================|Version| |PyPI| |BuildStatus|
:Documentation: http://guv.readthedocs.org/
:Source: http://github.com/veegee/guv
:Keywords: guv, greenlet, gevent, eventletAbout
-----guv is a fast networking library and WSGI server (like gevent/eventlet) for
**Python >= 3.2 and pypy3**The event loop backend is pyuv_cffi_, which aims to be fully compatible with the
pyuv_ interface. pyuv_cffi is fully supported on CPython and pypy3. libuv_
>= 1.0.0 is required.Asynchronous DNS queries are supported via dnspython3. To forcefully disable
greendns, set the environment variable ``GUV_NO_GREENDNS`` to any value.guv currently only runs on POSIX-compliant operating systems, but Windows
support is not far off and can be added in the near future if there is a demand
for this.This library is actively maintained and has a zero bug policy. Please submit
issues and pull requests, and bugs will be fixed immediately.**This project is under active development and any help is appreciated.**
Quickstart
----------Since guv is currently in alpha release state and under active development, it
is recommended to pull often and install manually::git clone https://github.com/veegee/guv.git
cd guv
python setup.py installNote: libuv_ >= 1.0.0 is required. This is the first stable version but is a
recent release and may not be available in Debian/Ubuntu stable repositories, so
you must compile and install manually.Serve your WSGI app using guv directly
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.. code-block:: python
import guv; guv.monkey_patch()
import guv.wsgiapp =
if __name__ == '__main__':
server_sock = guv.listen(('0.0.0.0', 8001))
guv.wsgi.serve(server_sock, app)Serve your WSGI app using guv with gunicorn_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^::
gunicorn -w 4 -b 127.0.0.1:8001 -k guv.GuvWorker wsgi_app:app
Note: you can use wrk_ to benchmark the performance of guv.
Crawl the web: efficiently make multiple "simultaneous" requests
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.. code-block:: python
import guv; guv.monkey_patch()
import requestsdef get_url(url):
print('get_url({})'.format(url))
return requests.get(url)def main():
urls = ['http://gnu.org'] * 10
urls += ['https://eff.org'] * 10pool = guv.GreenPool()
results = pool.starmap(get_url, zip(urls))for i, resp in enumerate(results):
print('{}: done, length: {}'.format(i, len(resp.text)))if __name__ == '__main__':
main()Guarantees
----------This library makes the following guarantees:
* `Semantic versioning`_ is strictly followed
* Compatible with Python >= 3.2.0 and PyPy3 >= 2.3.1 (Python 3.2.5).. _pyuv: https://github.com/saghul/pyuv
.. _pyuv_cffi: https://github.com/veegee/guv/tree/develop/pyuv_cffi
.. _libuv: https://github.com/libuv/libuv
.. _gunicorn: https://github.com/benoitc/gunicorn
.. _Semantic versioning: http://semver.org
.. _wrk: https://github.com/wg/wrk.. |Version| image:: https://img.shields.io/github/tag/veegee/guv.svg
.. |PyPI| image:: https://img.shields.io/pypi/v/guv.svg
:target: https://pypi.python.org/pypi/guv/
:alt: Latest Version.. |BuildStatus| image:: https://travis-ci.org/veegee/guv.svg?branch=develop
:target: https://travis-ci.org/veegee/guv