Hacker News new | ask | show | jobs
by quotemstr 632 days ago
At that point, why bother with asyncio? What we really want is something like Java virtual threads, something that doesn't have a code color.
3 comments

gevent is exactly this! http://www.gevent.org/

My startup has been using it in production for years. It excels at I/O bound workflows where you have highly concurrent real-time usage of slow/unpredictable partner APIs. You just write normal (non-async) Python code and the patched system internals create yields to the event loop whenever you’d be waiting for I/O, giving you essentially unlimited concurrency (as long as all pending requests and their context fit in RAM).

https://github.com/gfmio/asyncio-gevent does exist to let you use asyncio code in a gevent context, but it’s far less battle-tested and we’ve avoided using it so far.

I love gevent, but i never was 100% sure that nothing is secretly breaking or some weird thread safety issue. In a large SaaS app all sorts of 3rd party libs do weird background threading stuff or someone randomly starts doing threading.Local and shared global context. After hitting some weird hanging redis-py client issues, i turned gevent off and it went away. Never really got around to spend time to debug the issue(especially since it happened on prod and hard to replicate on stage/local).

Does your app have a lot of dependencies that do background threads? Like Launchdarkly(feature flags), redis, spyne(rpc) and on and on.

We also heavily use gevent but this is indeed the greatest frustration. Random and difficult to diagnose issues in external libraries like sockets being closed prematurely or timing out.
Not for those of us stuck in Java 8... Is it stable already?
I hear that some Amish sects permit the use of technology that's older and proven not to be too worldly, like washing machines, chainsaws, and Java 11. Have you considered converting?
Virtual threads only became stable in Java 21, unfortunately (https://openjdk.org/jeps/444). If the issue is "I'm bound to Java 8" proposing running a research build of Java 11 in production is going to fly as well as a lead balloon on the moon.
Even so, it's pretty new, isn't it? I don't quite trust the claim it's completely transparent to applications and libraries...
Yeah... Unfortunately golden handcuffs are binding me to the financial sector and, specifically, to Hadoop
Hadoop >=3.3 supports Java11.
Hmmm. That would indeed be better. Seems like an interesting experiment to try and implement virtual threads for python!