mirror of
https://github.com/frappe/gunicorn.git
synced 2026-07-02 18:51:31 +08:00
chore: prepare release 25.0.2
- Bump version to 25.0.2 - Update copyright year to 2026 in LICENSE and NOTICE - Add license headers to all Python source files - Add changelog entry for 25.0.2
This commit is contained in:
parent
026167acc9
commit
95b7ffeeaa
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
|||||||
2009-2024 (c) Benoît Chesneau <benoitc@gunicorn.org>
|
2009-2026 (c) Benoît Chesneau <benoitc@gunicorn.org>
|
||||||
2009-2015 (c) Paul J. Davis <paul.joseph.davis@gmail.com>
|
2009-2015 (c) Paul J. Davis <paul.joseph.davis@gmail.com>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
|||||||
2
NOTICE
2
NOTICE
@ -1,6 +1,6 @@
|
|||||||
Gunicorn
|
Gunicorn
|
||||||
|
|
||||||
2009-2024 (c) Benoît Chesneau <benoitc@gunicorn.org>
|
2009-2026 (c) Benoît Chesneau <benoitc@gunicorn.org>
|
||||||
2009-2015 (c) Paul J. Davis <paul.joseph.davis@gmail.com>
|
2009-2015 (c) Paul J. Davis <paul.joseph.davis@gmail.com>
|
||||||
|
|
||||||
Gunicorn is released under the MIT license. See the LICENSE
|
Gunicorn is released under the MIT license. See the LICENSE
|
||||||
|
|||||||
4
benchmarks/run_benchmark.py
Executable file → Normal file
4
benchmarks/run_benchmark.py
Executable file → Normal file
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""
|
"""
|
||||||
Benchmark script for gunicorn gthread worker.
|
Benchmark script for gunicorn gthread worker.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Simple WSGI app for benchmarking
|
# Simple WSGI app for benchmarking
|
||||||
|
|
||||||
def application(environ, start_response):
|
def application(environ, start_response):
|
||||||
|
|||||||
@ -1,6 +1,33 @@
|
|||||||
<span id="news-2026"></span>
|
<span id="news-2026"></span>
|
||||||
# Changelog - 2026
|
# Changelog - 2026
|
||||||
|
|
||||||
|
## 25.0.2 - 2026-02-06
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- Fix ASGI concurrent request failures through nginx proxy by normalizing
|
||||||
|
sockaddr tuples to handle both 2-tuple (IPv4) and 4-tuple (IPv6) formats
|
||||||
|
([PR #3485](https://github.com/benoitc/gunicorn/pull/3485))
|
||||||
|
|
||||||
|
- Fix graceful disconnect handling for ASGI worker to properly handle
|
||||||
|
client disconnects without raising exceptions
|
||||||
|
([PR #3485](https://github.com/benoitc/gunicorn/pull/3485))
|
||||||
|
|
||||||
|
- Fix lazy import of dirty module for gevent compatibility - prevents
|
||||||
|
import errors when concurrent.futures is imported before gevent monkey-patching
|
||||||
|
([PR #3483](https://github.com/benoitc/gunicorn/pull/3483))
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- Refactor: Extract `_normalize_sockaddr` utility function for consistent
|
||||||
|
socket address handling across workers
|
||||||
|
|
||||||
|
- Add license headers to all Python source files
|
||||||
|
|
||||||
|
- Update copyright year to 2026 in LICENSE and NOTICE files
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 25.0.1 - 2026-02-02
|
## 25.0.1 - 2026-02-02
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@ -1,6 +1,33 @@
|
|||||||
<span id="news"></span>
|
<span id="news"></span>
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 25.0.2 - 2026-02-06
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- Fix ASGI concurrent request failures through nginx proxy by normalizing
|
||||||
|
sockaddr tuples to handle both 2-tuple (IPv4) and 4-tuple (IPv6) formats
|
||||||
|
([PR #3485](https://github.com/benoitc/gunicorn/pull/3485))
|
||||||
|
|
||||||
|
- Fix graceful disconnect handling for ASGI worker to properly handle
|
||||||
|
client disconnects without raising exceptions
|
||||||
|
([PR #3485](https://github.com/benoitc/gunicorn/pull/3485))
|
||||||
|
|
||||||
|
- Fix lazy import of dirty module for gevent compatibility - prevents
|
||||||
|
import errors when concurrent.futures is imported before gevent monkey-patching
|
||||||
|
([PR #3483](https://github.com/benoitc/gunicorn/pull/3483))
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- Refactor: Extract `_normalize_sockaddr` utility function for consistent
|
||||||
|
socket address handling across workers
|
||||||
|
|
||||||
|
- Add license headers to all Python source files
|
||||||
|
|
||||||
|
- Update copyright year to 2026 in LICENSE and NOTICE files
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 25.0.1 - 2026-02-02
|
## 25.0.1 - 2026-02-02
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
|
||||||
def define_env(env):
|
def define_env(env):
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#
|
#
|
||||||
# An example of how to pass information from the command line to
|
# An example of how to pass information from the command line to
|
||||||
# a WSGI app. Only applies to the native WSGI workers used by
|
# a WSGI app. Only applies to the native WSGI workers used by
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import tempfile
|
import tempfile
|
||||||
files = []
|
files = []
|
||||||
def app(environ, start_response):
|
def app(environ, start_response):
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
raise RuntimeError("Bad app!")
|
raise RuntimeError("Bad app!")
|
||||||
|
|
||||||
def app(environ, start_response):
|
def app(environ, start_response):
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Web Application - FastAPI app demonstrating Celery replacement.
|
Web Application - FastAPI app demonstrating Celery replacement.
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Gunicorn Configuration - Celery Replacement Example
|
Gunicorn Configuration - Celery Replacement Example
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Task Workers - Celery Replacement using Gunicorn Dirty Arbiters
|
Task Workers - Celery Replacement using Gunicorn Dirty Arbiters
|
||||||
|
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Tests package
|
# Tests package
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Pytest configuration for Celery Replacement tests.
|
Pytest configuration for Celery Replacement tests.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Integration Tests for Celery Replacement Example
|
Integration Tests for Celery Replacement Example
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Unit Tests for Task Workers
|
Unit Tests for Task Workers
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Example Dirty Application - Simulates ML Model Loading and Inference
|
Example Dirty Application - Simulates ML Model Loading and Inference
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Gunicorn configuration for Dirty Workers Example
|
Gunicorn configuration for Dirty Workers Example
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""
|
"""
|
||||||
Test script to demonstrate Dirty App functionality directly.
|
Test script to demonstrate Dirty App functionality directly.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""
|
"""
|
||||||
Test script to demonstrate the Dirty Protocol layer.
|
Test script to demonstrate the Dirty Protocol layer.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""
|
"""
|
||||||
Integration test demonstrating DirtyWorker execution.
|
Integration test demonstrating DirtyWorker execution.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Example WSGI Application that uses Dirty Workers
|
Example WSGI Application that uses Dirty Workers
|
||||||
|
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Embedding service package
|
# Embedding service package
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.dirty.app import DirtyApp
|
from gunicorn.dirty.app import DirtyApp
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
bind = "0.0.0.0:8000"
|
bind = "0.0.0.0:8000"
|
||||||
workers = 2
|
workers = 2
|
||||||
worker_class = "asgi"
|
worker_class = "asgi"
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from gunicorn.dirty.client import get_dirty_client
|
from gunicorn.dirty.client import get_dirty_client
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import requests
|
import requests
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Sample Gunicorn configuration file.
|
# Sample Gunicorn configuration file.
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import cherrypy
|
import cherrypy
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
4
examples/frameworks/django/testing/manage.py
Executable file → Normal file
4
examples/frameworks/django/testing/manage.py
Executable file → Normal file
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
import os, sys
|
import os, sys
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
4
examples/frameworks/django/testing/testing/apps/someapp/__init__.py
Executable file → Normal file
4
examples/frameworks/django/testing/testing/apps/someapp/__init__.py
Executable file → Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from multiprocessing import Process, Queue
|
from multiprocessing import Process, Queue
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
4
examples/frameworks/django/testing/testing/apps/someapp/tests.py
Executable file → Normal file
4
examples/frameworks/django/testing/testing/apps/someapp/tests.py
Executable file → Normal file
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This file demonstrates two different styles of tests (one doctest and one
|
This file demonstrates two different styles of tests (one doctest and one
|
||||||
unittest). These will both pass when you run "manage.py test".
|
unittest). These will both pass when you run "manage.py test".
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from django.conf.urls import url
|
from django.conf.urls import url
|
||||||
|
|
||||||
from . import views
|
from . import views
|
||||||
|
|||||||
4
examples/frameworks/django/testing/testing/apps/someapp/views.py
Executable file → Normal file
4
examples/frameworks/django/testing/testing/apps/someapp/views.py
Executable file → Normal file
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import csv
|
import csv
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Django settings for testing project.
|
# Django settings for testing project.
|
||||||
|
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
|
|
||||||
# Uncomment the next two lines to enable the admin:
|
# Uncomment the next two lines to enable the admin:
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
WSGI config for testing project.
|
WSGI config for testing project.
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import io
|
import io
|
||||||
|
|
||||||
from flask import Flask, send_file
|
from flask import Flask, send_file
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Run with:
|
# Run with:
|
||||||
#
|
#
|
||||||
# $ gunicorn flaskapp:app
|
# $ gunicorn flaskapp:app
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Example command to run the example:
|
# Example command to run the example:
|
||||||
#
|
#
|
||||||
# $ gunicorn flaskapp_aiohttp_wsgi:aioapp -k aiohttp.worker.GunicornWebWorker
|
# $ gunicorn flaskapp_aiohttp_wsgi:aioapp -k aiohttp.worker.GunicornWebWorker
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from pyramid.config import Configurator
|
from pyramid.config import Configurator
|
||||||
from pyramid.response import Response
|
from pyramid.response import Response
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Run with
|
# Run with
|
||||||
#
|
#
|
||||||
# $ gunicorn webpyapp:app
|
# $ gunicorn webpyapp:app
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Gunicorn configuration for HTTP/2 features example
|
# Gunicorn configuration for HTTP/2 features example
|
||||||
|
|
||||||
bind = "0.0.0.0:8443"
|
bind = "0.0.0.0:8443"
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""
|
"""
|
||||||
Test script for HTTP/2 features example.
|
Test script for HTTP/2 features example.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Example WSGI application demonstrating HTTP/2 with gevent worker.
|
Example WSGI application demonstrating HTTP/2 with gevent worker.
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Gunicorn configuration for HTTP/2 with gevent worker.
|
Gunicorn configuration for HTTP/2 with gevent worker.
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""
|
"""
|
||||||
Tests for HTTP/2 with gevent example.
|
Tests for HTTP/2 with gevent example.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Use this config file in your script like this:
|
Use this config file in your script like this:
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
#
|
#
|
||||||
# An example of a standalone application using the internal API of Gunicorn.
|
# An example of a standalone application using the internal API of Gunicorn.
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
# Streaming Chat Example
|
# Streaming Chat Example
|
||||||
# Demonstrates dirty worker streaming with simulated LLM token generation
|
# Demonstrates dirty worker streaming with simulated LLM token generation
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
from gunicorn.dirty.app import DirtyApp
|
from gunicorn.dirty.app import DirtyApp
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
bind = "0.0.0.0:8000"
|
bind = "0.0.0.0:8000"
|
||||||
workers = 2
|
workers = 2
|
||||||
worker_class = "asgi"
|
worker_class = "asgi"
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from fastapi.responses import StreamingResponse, HTMLResponse
|
from fastapi.responses import StreamingResponse, HTMLResponse
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Integration tests for the streaming chat example."""
|
"""Integration tests for the streaming chat example."""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
import errno
|
import errno
|
||||||
import re
|
import re
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
import signal
|
import signal
|
||||||
import commands
|
import commands
|
||||||
import threading
|
import threading
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
# This file is part of gunicorn released under the MIT license.
|
# This file is part of gunicorn released under the MIT license.
|
||||||
# See the NOTICE for more information.
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
version_info = (25, 0, 1)
|
version_info = (25, 0, 2)
|
||||||
__version__ = ".".join([str(v) for v in version_info])
|
__version__ = ".".join([str(v) for v in version_info])
|
||||||
SERVER = "gunicorn"
|
SERVER = "gunicorn"
|
||||||
SERVER_SOFTWARE = "%s/%s" % (SERVER, __version__)
|
SERVER_SOFTWARE = "%s/%s" % (SERVER, __version__)
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Generate the Markdown settings reference for MkDocs."""
|
"""Generate the Markdown settings reference for MkDocs."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# Usage: git log --format="%an <%ae>" | python update_thanks.py
|
# Usage: git log --format="%an <%ae>" | python update_thanks.py
|
||||||
# You will get a result.txt file, you can work with the file (update, remove, ...)
|
# You will get a result.txt file, you can work with the file (update, remove, ...)
|
||||||
|
|||||||
@ -0,0 +1,4 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
bind = "unix:/tmp/bar/baz"
|
bind = "unix:/tmp/bar/baz"
|
||||||
workers = 3
|
workers = 3
|
||||||
proc_name = "fooey"
|
proc_name = "fooey"
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
proc_name = "not-fooey"
|
proc_name = "not-fooey"
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
wsgi_app = "app1:app1"
|
wsgi_app = "app1:app1"
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Docker-based integration tests package."""
|
"""Docker-based integration tests package."""
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Simple ASGI test application for HTTP protocol testing."""
|
"""Simple ASGI test application for HTTP protocol testing."""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Pytest fixtures for ASGI compliance Docker integration tests."""
|
"""Pytest fixtures for ASGI compliance Docker integration tests."""
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""HTTP/2 Docker integration tests package."""
|
"""HTTP/2 Docker integration tests package."""
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Test WSGI application for HTTP/2 Docker integration tests."""
|
"""Test WSGI application for HTTP/2 Docker integration tests."""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Pytest fixtures for HTTP/2 Docker integration tests."""
|
"""Pytest fixtures for HTTP/2 Docker integration tests."""
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""HTTP/2 Docker integration tests.
|
"""HTTP/2 Docker integration tests.
|
||||||
|
|
||||||
These tests verify HTTP/2 functionality with real connections to gunicorn
|
These tests verify HTTP/2 functionality with real connections to gunicorn
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""Simple ASGI test application for uWSGI protocol testing."""
|
"""Simple ASGI test application for uWSGI protocol testing."""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Test WSGI application for uWSGI protocol integration tests.
|
Test WSGI application for uWSGI protocol integration tests.
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
pytest fixtures for uWSGI Docker integration tests.
|
pytest fixtures for uWSGI Docker integration tests.
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Integration tests for gunicorn's uWSGI binary protocol with nginx.
|
Integration tests for gunicorn's uWSGI binary protocol with nginx.
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import NoMoreData
|
from gunicorn.http.errors import NoMoreData
|
||||||
request = NoMoreData
|
request = NoMoreData
|
||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidRequestLine
|
from gunicorn.http.errors import InvalidRequestLine
|
||||||
request = InvalidRequestLine
|
request = InvalidRequestLine
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidRequestLine
|
from gunicorn.http.errors import InvalidRequestLine
|
||||||
request = InvalidRequestLine
|
request = InvalidRequestLine
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidRequestMethod
|
from gunicorn.http.errors import InvalidRequestMethod
|
||||||
request = InvalidRequestMethod
|
request = InvalidRequestMethod
|
||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidRequestMethod
|
from gunicorn.http.errors import InvalidRequestMethod
|
||||||
request = InvalidRequestMethod
|
request = InvalidRequestMethod
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidHTTPVersion
|
from gunicorn.http.errors import InvalidHTTPVersion
|
||||||
request = InvalidHTTPVersion
|
request = InvalidHTTPVersion
|
||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidHeaderName
|
from gunicorn.http.errors import InvalidHeaderName
|
||||||
request = InvalidHeaderName
|
request = InvalidHeaderName
|
||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import LimitRequestLine
|
from gunicorn.http.errors import LimitRequestLine
|
||||||
request = LimitRequestLine
|
request = LimitRequestLine
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
request = LimitRequestHeaders
|
request = LimitRequestHeaders
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
request = LimitRequestHeaders
|
request = LimitRequestHeaders
|
||||||
|
|||||||
@ -1,2 +1,6 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
request = LimitRequestHeaders
|
request = LimitRequestHeaders
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.config import Config
|
from gunicorn.config import Config
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.config import Config
|
from gunicorn.config import Config
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.config import Config
|
from gunicorn.config import Config
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.config import Config
|
from gunicorn.config import Config
|
||||||
from gunicorn.http.errors import LimitRequestHeaders
|
from gunicorn.http.errors import LimitRequestHeaders
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidHeader
|
from gunicorn.http.errors import InvalidHeader
|
||||||
|
|
||||||
request = InvalidHeader
|
request = InvalidHeader
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
#
|
||||||
|
# This file is part of gunicorn released under the MIT license.
|
||||||
|
# See the NOTICE for more information.
|
||||||
|
|
||||||
from gunicorn.http.errors import InvalidHeader
|
from gunicorn.http.errors import InvalidHeader
|
||||||
|
|
||||||
request = InvalidHeader
|
request = InvalidHeader
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user