gevent
psycopg2cffi
gevent | psycopg2cffi | |
---|---|---|
5 | 2 | |
6,163 | 177 | |
0.2% | 1.1% | |
8.7 | 0.0 | |
3 months ago | almost 2 years ago | |
Python | Python | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gevent
-
Is anyone using PyPy for real work?
A sub-question for the folks here: is anyone using the combination of gevent and PyPy for a production application? Or, more generally, other libraries that do deep monkey-patching across the Python standard library?
Things like https://github.com/gevent/gevent/issues/676 and the fix at https://github.com/gevent/gevent/commit/f466ec51ea74755c5bee... indicate to me that there are subtleties on how PyPy's memory management interacts with low-level tweaks like gevent that have relied on often-implicit historical assumptions about memory management timing.
Not sure if this is limited to gevent, either - other libraries like Sentry, NewRelic, and OpenTelemetry also have low-level monkey-patched hooks, and it's unclear whether they're low-level enough that they might run into similar issues.
For a stack without any monkey-patching I'd be overjoyed to use PyPy - but between gevent and these monitoring tools, practically every project needs at least some monkey-patching, and I think that there's a lack of clarity on how battle-tested PyPy is with tools like these.
- SynchronousOnlyOperation from celery task using gevent execution pool on django orm
-
How to Choose the Right Python Concurrency API
I'm not sure how much it replicates the CSP model, but the closest thing I've found to Go-style concurrency in Python is gevent: https://github.com/gevent/gevent
I personally still prefer to use it in all my projects.
-
I have a problem with installing Ajenti on a 64bit Ubuntu 21.04 server
Greenlet seems to have some troubles compiling with Python 3.9. https://github.com/gevent/gevent/issues/1627
psycopg2cffi
-
Is anyone using PyPy for real work?
The only compatibility issue I've run into is database drivers.
For PostgreSQL, psycopg2 is not supported. psycopg2cffi is largely unmaintained, and the 2.9.0 version in PyPI lacks some newer features of psycopg2: the `psycopg2.sql` module and empty result sets raise a RuntimeError in Python 3.7+. The latest commit in on Github does have these changes [1]. Psycopg 3 [2] and pg8000 [3] (as user tlocke mentioned elsewhere) are viable alternates provided you aren't stuck with older versions of PostgreSQL. I'm going to continue to use psycopg2cffi until I can upgrade an old PostgreSQL 9.4 database.
For Microsoft SQL Server, pymssql does not support PyPy [4]. It's under new maintainership so it might gain support in the future. pypyodbc hasn't had any activity since 2022, and no new PyPI release since 2021 [5]. The datatypes returned can differ between libodbc1 versions. On Ubuntu 18.04 in particular: empty string columns are returned as a single space, integer columns are returned as a Decimal. Also, if you encounter a mysterious HY010 error ("Function sequence error"), you may need to upgrade libodbc1 to v2.3.7+ from v2.3.4 using the Microsoft repos.
[1]: https://github.com/chtd/psycopg2cffi
-
Microsoft is hiring, looking to speed up cpython
From time to time, I use pgcopy coupled with psycopg2cffi to feed large volumes of data processed by custom parsers written in Python for several formats. The whole process is 4-5x faster with PyPy.
What are some alternatives?
eventlet - Concurrent networking library for Python
pgcopy - fast data loading with binary copy
Ray - Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.
hpy - HPy: a better API for Python
Faust - Python Stream Processing
python-mysql-replication - Pure Python Implementation of MySQL replication protocol build on top of PyMYSQL
Thespian Actor Library - Python Actor concurrency library
sparc-curation - code and files for SPARC curation workflows
kombu - Messaging library for Python.
preshed - 💥 Cython hash tables that assume keys are pre-hashed
Tomorrow - Magic decorator syntax for asynchronous code in Python
murmurhash - 💥 Cython bindings for MurmurHash2