6 ms·
Show HN: Asynchronous HTTP/2 client for Python 2.7
- gigatexal 8y agoI’m of the opinion that one should only maintain python2 projects not actively develop and expand them. If your project needed http2 then it should be ported to python3. Edit: would using python3 in a container make sense where the distribution only ships legacy python?
- coldtea 8y agoWhat if a company has a large codebase that's in Python 2 and wants http2? Will those suggesting porting help them bear the costs and manhours it takes? (Google, for one, still uses 2. As does Dropbox. And both companies had Guido Van Rossum working for them at some point).
- goatlover 8y agoCompanies are going to have to port at some point.
- brudgers 8y agoGoogle has Grumpy. Because writing a compiler is easier than porting. https://github.com/google/grumpy https://github.com/google/grumpy
- enitihas 8y agoNot sure about that. Some companies may have codebases as complicated as the python codebase itself. For them it may make more sense to maintain python2 than to upgrade. Granted, there will be very few such companies.
- kbutler 8y agoUnjustifiable assertion. - they could continue to maintain python2 - they could move to a non-python platform - they could go out of business - they could hold out for Python4 (Python3 was only 8 years after Python2) ...
- kevinmgranger 8y agoGVR has already said that Python 4 (if it's even ever called that) will not have the same kind of breaking changes 3 did.
- kbutler 8y agoAnd 3 had different changes than 2 (https://docs.python.org/3/whatsnew/2.0.html https://docs.python.org/3/whatsnew/2.0.html) though it is interesting that Unicode support was a big feature in both, and that many people still find Python3’s Unicode support problematic (e.g., http://lucumr.pocoo.org/2014/5/12/everything-about-unicode/ http://lucumr.pocoo.org/2014/5/12/everything-about-unicode/) But if an individual or organization does not find the python 3 updates and ecosystem a compelling upgrade over 2, “don’t update until the next big change” is definitely one option.
- kevinmgranger 8y agoThe whole point of my comment is that there won't be a "next big change", just lots of smaller ones.
- CJefferson 8y agoPython 2 is popular enough that someone will keep up support for decades to come. Just making sure it supports new OS releases, and fixing the occasional bug, will not be a significant overhead.
- ellisv 8y ago> What if a company has a large codebase that's in Python 2 and wants http2? Will those suggesting porting help them bear the costs and manhours it takes? This is why banks still use COBOL and Fortran.
- coldtea 8y agoMore power to them!
- devy 8y agoAll aforementioned large companies have a diverse tech stack rather than a single stack, let alone programming language versions. Having Python BDFL working for them doesn't necessarily mean they will follow Python community consensus. Neither was Guido tasked to help them upgrade their python stack to 3.x AFAIK. Python core team will eventually cease support 2.x support at some point[1], so the ones who uses 2.x will be on their own. Will the cost of self-patching python 2.x lower than rewrite the software application you developed on 2.x? Well, that's on them to decide. After 2.x being officially deprecated, what's the point of having a Async HTTP/2 client working (mostly back-porting features that's already on 3k) on 2.x? [1]: https://pythonclock.org/ https://pythonclock.org/
- always_good 8y ago> After 2.x being officially deprecated, what's the point of having a Async HTTP/2 client working (mostly back-porting features that's already on 3k) on 2.x? Once again, the point is that software will continue working beyond that deprecation event. As you said, the cost/benefit analysis of a rewrite isn't always in favor of a rewrite at that point in time. So what must follow is that there will be Python 2 software out in the wild for some time regardless of support. What other possibility is there?
- devy 8y ago> Once again, the point is that software will continue working beyond that deprecation event. Yes, python 2.x code will work - but in the event major CVEs for a piece of software stack that's deprecated, you are left to no choice but to fix on your own. Those sometime are by no means no small feat! And mind you this is an ongoing battle to patch up security holes.
- k1ns 8y agoPosted an issue here: https://github.com/vladmunteanu/th2c/issues/27 https://github.com/vladmunteanu/th2c/issues/27
- harryf 8y agoThe current version of Redhat - RHEL 7 - which most banks, large enterprises etc. are using comes with a system python version of 2.7.5 and you need to jump through hoops to install Python 3.x ( e.g. https://stackoverflow.com/questions/8087184/problems-installing-python3-on-rhel https://stackoverflow.com/questions/8087184/problems-install... ), which may not even be possible if you're in an environment where security is tightly controlled. There is the possibility of Python 3.x being default in RHEL 8 ( https://fedoraproject.org/wiki/Changes/Python_3_as_Default https://fedoraproject.org/wiki/Changes/Python_3_as_Default ) but right now RHEL 8 isn't released and there's no date for it being released. And even once it is released, it will be more years before big enterprises really start switching TLDR ignore python 2.7 and alienate RHEL customers
- gigatexal 8y agoI’m not an enterprise developer but does RHEL 7 support docker? Run python3 in a container. Isn’t that the point of containers?
- nudpiedo 8y agoyou mean bringing code which has not been cleared as secure & authorized by corporation's legal experts? BigCorp makes all those easy things hard (usually after lessons learnt).
- gigatexal 8y agoEven if you run official builds by the python foundation from the library on docker hub? That seems like a business opportunity: certify software for RHEL by all the government bodies and pay RH for sign off and then be the only vendor to be sanctioned to run “third party but vetted” python3.
- rspeer 8y agoIf a group has a security policy that makes it hard for them to install Python 3, of course there's no way in hell they're installing Docker.
- deleted 8y ago[deleted]
- deleted 8y ago[deleted]
- benatkin 9y agoIts name made me think of THC. I'll ask the obvious question: why not Python 3?
- vsmhn 9y agoWell, Python 3 already has a similar library that deals with this stuff, such as https://github.com/decentfox/aioh2 https://github.com/decentfox/aioh2. Also, this is mostly intended for Tornado backends, offering compatibility with Tornado's request / response objects.
- benatkin 9y agoI see. May I suggest linking to that in the README? And if you aren't part of the Python 2 forever camp, suggest how one might migrate from using your library to using python 3 with the other library in the future? And if the APIs aren't similar it might be a good idea to make them similar.
- vsmhn 9y agoI understand your point, and I'll try to update the README with that information. However, this client tries to follow Tornado's ways, whereas aioh2 works on Python's asyncio. It's still WIP, so feedback like yours helps a lot, thanks!
- peterkelly 8y agoAre people really still so closely wedded to Python 2 that they find it easier to reimplement all the features they need from Python 3 in the former, instead of switching to the latter?
- coldtea 8y agoYes.
- siimtalvik 8y agoyes. I had a coworker who was against moving to python3(and kept on writing python2 code for a while) because you need to use brackets with python3 print statement.
- yoz-y 9y agoAny specific reason to develop this for Python 2 rather than Python 3?
- melling 9y agoThe end of life is in 2020 but it doesn’t say when. Is this still the latest? http://legacy.python.org/dev/peps/pep-0373/ http://legacy.python.org/dev/peps/pep-0373/
- sanxiyn 9y agoIt's January 1st, 2020. https://mail.python.org/pipermail/python-dev/2018-March/152348.html https://mail.python.org/pipermail/python-dev/2018-March/1523...
- meddlepal 9y agoThere's still a lot of existing and new Python 2 code being written. Idealistically we would all be on Python 3, but software is a messy land.
- goatlover 8y agoIt's been ten years, so it's gone beyond "idealistically".
- CJefferson 8y agoStill not distributed by default on Mac or Ubuntu long term release, unlike 2.
- rspeer 8y agoThe current Ubuntu long-term support release is Xenial, which comes with only Python 3 installed. If you're talking about Trusty, its support is ending fairly soon. On Xenial, you have to separately install an optional package for Python 2. When you try to run /usr/bin/python on a fresh Xenial install, it'll tell you that you need to install a package such as python-minimal==2.7.11, whereas /usr/bin/python3 is already there.
- vsmhn 9y agoWhy Python 2 and not Python 3? Short answer is: because Python 3 already benefits from a better, more complete client: aioh2 (https://github.com/decentfox/aioh2 https://github.com/decentfox/aioh2) that works with Python's asyncio. th2c is mostly intended for Tornado backends, trying to keep a similar interface and compatibility with Request / Response objects. It was initially developed in order to be able to communicate with APNS from a python 2.7 environment.
- ericfrederich 9y agoHow does that compare to aiohttp? What are the benefits?
- vsmhn 9y agoI'm not sure I understand the question, are you interested in comparing tornado and aiohttp?
- omginternets 8y agoaio isn't available for py2. The benefit is that this is available for py2.
- loeg 8y agoThere is https://github.com/vstinner/trollius https://github.com/vstinner/trollius for vanilla Python2.
- vsmhn 8y agotrollius is no longer maintained
- loeg 8y agoIt's still a reasonable starting place for anyone wanting asyncio on vanilla Python2. Outside of vanilla Python2, Tauthon also has some tracking issues for the language extensions and libraries needed for a backport of asyncio to Tauthon.[0] [0]: https://github.com/naftaliharris/tauthon/issues/10 https://github.com/naftaliharris/tauthon/issues/10
- ericfrederich 9y agoQt has an event loop and async http library. I've used it from PyQt with great success.