Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: sigterm handling so NGINX gracefully exits #1

Merged
merged 1 commit into from
Oct 8, 2020

Commits on Oct 7, 2020

  1. fix: sigterm handling so NGINX gracefully exist

    After compiling nginx with the modifications:
    
    ```shell
    make build-heroku-18
    ```
    
    I tested that the changes actually worked:
    
    ```shell
    apt-get update
    apt-get install -y python3-venv
    python3 -m venv venv
    ./venv/bin/pip install gunicorn
    FORCE=1 bin/start-nginx
    ./venv/bin/gunicorn -b unix:/tmp/nginx.socket app:app
    
    # in another terminal (should hang for 15s assuming app is setup correctly)
    curl localhost:5000
    
    # in another terminal
    # get the PID
    ps aux | grep master
    
    # should be graceful, that is nginx should shutdown after it finishes serving the request
    kill -TERM $PID
    
    FORCE=1 bin/start-nginx
    # should kill nginx without waiting
    # curl returns an error:
    #   curl: (52) Empty reply from server
    kill -QUIT $PID
    ```
    
    The `app` used by `gunicorn` was the hello world with a sleep thrown in
    so we mimic a long running request.
    
    ```python
    import time
    
    def app(environ, start_response):
            time.sleep(15)
            data = b"Hello, World!\n"
            start_response("200 OK", [
                ("Content-Type", "text/plain"),
                ("Content-Length", str(len(data)))
            ])
            return iter([data])
    ```
    
    Based on heroku#56
    sbdchd committed Oct 7, 2020
    Configuration menu
    Copy the full SHA
    4780944 View commit details
    Browse the repository at this point in the history