gunicorn 21

Created on 30 Jan 2016  ·  43Comments  ·  Source: benoitc/gunicorn

meta issue to track changes needed to release the version 21. After the talk I gave at the FOSDEM I thought it would be interesting to track the different tasks we need for the new version. Feedback and help is more than welcome.

tasks

  • [ ] release imsg
  • [ ] add regression test to the supervision
  • [ ] replace the temporary file notification system by imsg
  • [ ] add/increase tests for the logging (if needed)
  • [ ] handle logging via a separate process coupled with imsg
  • [ ] add new Proc class
  • [ ] add HTTP 2 support
  • [x] remove all python2 compatibility bits (PR: #1764)
Project release

Most helpful comment

Is this issue dead? If so where is progress on HTTP/2 support being tracked now?

All 43 comments

cc @berkerpeksag @tilgovi

What does:

remove all python3 compatibility bits

Mean? That's not gunicorn dropping support for Python 3.x is it?

@dstufft ah... fixed it. I meant python 2 of course :) Thanks!

So, does that mean dropping support for Python 2.x then? :)

@dstufft totally. New version will only support python 3. Python 2 will only have the maintenance updates on the 19.x branch.

Cool. Thanks!

@benoitc For HTTP/2, if you're interested in supporting it using hyper-h2 I may be able to spare some time to do help out with integration work.

@dstufft we talk about that last year in #1029 :)

@Lukasa nice! It seems to have the exact level of abstraction needed for gunicorn. Maybe we could sync each others next week on IRC when I'm back from the FOSDEM? I will toy with it in the mean time :)

@benoitc You bet! Come join us in #python-hyper on freenode whenever suits.

:+1:

and some abstractions for non http protocol, like Thrift-rpc? It's already doable with ugly hack with gunicorn 19.

@Lukasa was busy last week. Let's try to discuss that on #gunicorn next week or your channel if you want to.

@athoune what would it requires?

@benoitc so gunicorn 20 will not support Python 2.7? Why not just drop 2.6?

@RyPeck Support for 2.x is not dropped. What it means is that gunicorn 19.X will get maintenance updates but no more new features, while gunicorn 20.x and sup will continue to evolve, just like python 2.x is vs 3.x. There may be from time to time backports anyway.

At least that the plan :) Any opinion is welcome.

@benoitc good to know - if you could codify that plan somewhere more obvious that would be great! In the mean time I'll update my relevant requirements files to gunicorn<20 which should always get me the latest 19.x.y.

@athoune

and some abstractions for non http protocol, like Thrift-rpc? It's already doable with ugly hack with gunicorn 19.

IMO, if the abstractions in gunicorn holds relatively the same, it won't be that dirty for non http protocols. See our https://github.com/eleme/gunicorn_thrift/ , we'll keep up with gunicorn 20 once it's released.

It would be good to add to the README.md and docs of 19+ that 19.x is the last to support Python2 but will continue to be maintained.

Any news on a new release? Stumbled across this fix that I'd like to see released to the wild:
610596c9d93b3c9086becd6212ab4ba81d476dc4

@jimmywan Gunicorn 20 is not ready yet but we can indeed make a new 19.x release.

@berkerpeksag i guess we can cut a release now. Then do some grooming Thoughts ? cc @tilgovi

Just curious. Do you have an ETA for release? It looks like it has been about a year since the last release. I would like to get #1616 into production.

@altaurog see #1634 for the next (19.8.0) release

remove all python2 compatibility bits

As a first step towards this, is there any interest in first dropping support for EOL Python versions: 2.6 and 3.2-3.3? They no longer receive security updates (or any updates) from the core Python team and they're little used.

Here's the pip installs for Gunicorn from PyPI for last month:

| python_version | percent | download_count |
| -------------- | ------: | -------------: |
| 2.7 | 43.17% | 310,345 |
| 3.6 | 27.45% | 197,303 |
| 3.5 | 25.37% | 182,372 |
| 3.4 | 3.83% | 27,540 |
| 3.7 | 0.07% | 504 |
| 2.6 | 0.06% | 397 |
| 3.3 | 0.05% | 348 |
| 3.2 | 0.00% | 27 |
| None | 0.00% | 7 |

Source: pypinfo --start-date -46 --end-date -19 --percent --pip --markdown gunicorn pyversion

I doubt we have a lot of compatibility code for those EOL Pythons. We could probably get rid all of them (all pre 3.5 versions) in same PR.

Oh, by the way, thanks for the installation stats!

Here's a few more stats for good measure.

$ pypinfo --start-date -46 --end-date -19 --percent --pip --markdown gunicorn system distro

| system_name | distro_name | percent | download_count |
| ----------- | ------------------------------- | ------: | -------------: |
| Linux | Debian GNU/Linux | 49.80% | 352,524 |
| Linux | Ubuntu | 24.38% | 172,604 |
| Linux | None | 5.94% | 42,071 |
| Linux | Alpine Linux | 5.92% | 41,902 |
| Linux | Amazon Linux AMI | 4.24% | 30,016 |
| Linux | CentOS Linux | 3.88% | 27,471 |
| Linux | debian | 2.89% | 20,454 |
| Darwin | macOS | 1.41% | 9,965 |
| Windows | None | 0.79% | 5,610 |
| Linux | Red Hat Enterprise Linux Server | 0.74% | 5,255 |

$ pypinfo --start-date -46 --end-date -19 --percent --pip --markdown gunicorn country

| country | percent | download_count |
| ------- | ------: | -------------: |
| US | 84.67% | 545,887 |
| IE | 3.58% | 23,060 |
| DE | 2.69% | 17,326 |
| FR | 1.80% | 11,628 |
| GB | 1.40% | 9,051 |
| CA | 1.40% | 8,999 |
| AU | 1.16% | 7,503 |
| NL | 1.15% | 7,444 |
| RU | 1.14% | 7,349 |
| JP | 1.01% | 6,496 |

removing support of python2 is planned for next major release.

However, one stats though you were forgetting is how much I were using
python2 ;) Hopefully not that much anymore.

On Mon, Mar 19, 2018 at 10:02 AM, Hugo notifications@github.com wrote:

Here's a few more stats for good measure.

$ pypinfo --start-date -46 --end-date -19 --percent --pip --markdown
gunicorn system distro
system_name distro_name percent download_count
Linux Debian GNU/Linux 49.80% 352,524
Linux Ubuntu 24.38% 172,604
Linux None 5.94% 42,071
Linux Alpine Linux 5.92% 41,902
Linux Amazon Linux AMI 4.24% 30,016
Linux CentOS Linux 3.88% 27,471
Linux debian 2.89% 20,454
Darwin macOS 1.41% 9,965
Windows None 0.79% 5,610
Linux Red Hat Enterprise Linux Server 0.74% 5,255

$ pypinfo --start-date -46 --end-date -19 --percent --pip --markdown
gunicorn country
country percent download_count
US 84.67% 545,887
IE 3.58% 23,060
DE 2.69% 17,326
FR 1.80% 11,628
GB 1.40% 9,051
CA 1.40% 8,999
AU 1.16% 7,503
NL 1.15% 7,444
RU 1.14% 7,349
JP 1.01% 6,496


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/benoitc/gunicorn/issues/1195#issuecomment-374142996,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAA4ojqC7BLlbFyIS6Mu49hrggRel_28ks5tf3QsgaJpZM4HPzot
.

https://github.com/benoitc/gunicorn/pull/1764 has been merged which drops Python 2 support, and can be checked off the task list above.

@hugovk done!

@benoitc what would have to change for HTTP2 support. Curious, because I'd love to help.

@benoitc Any update on http/2 support?

@vikramarsid once 20.0 is released I will provide a worker for it

Would be great to rename this and get a milestone to track for 21.

@tilgovi done. I think we should open a project and assign a bunch of tickets for it.

👍

Is this issue dead? If so where is progress on HTTP/2 support being tracked now?

I am also very interested in the http/2 feature. Will it ever come? Any ETA?

Besides HTTP/2, what other big feature requests are there right now? Windows support is the other one I keep seeing, but no one has taken on that work, either.

@benoitc I hope there is something for HTTP/2 or even an external addon [ version 20.0.4 ]

HTTP/2 is very relevant request

@tilgovi Since 20.1.0 has already been released, does this milestone need to be renamed?

Was this page helpful?
0 / 5 - 0 ratings