簡體   English   中英

Gunicorn優雅地停靠與碼頭工人組成

[英]Gunicorn graceful stopping with docker-compose

我發現當我使用docker -compose關閉我的gunicorn (19.7.1)python應用程序時,它總是需要10秒才能關閉。 這是在強制終止進程之前docker-compose等待的默認最長時間(使用-t / --timeout參數調整)。 我認為這意味着gunicorn沒有被優雅地關閉。 我可以用以下方法重現:

泊塢窗,compose.yml:

version: "3"
services:
  test:
    build: ./
    ports:
      - 8000:8000

Dockerfile:

FROM python

RUN pip install gunicorn

COPY test.py .

EXPOSE 8000
CMD gunicorn -b :8000 test:app

test.py

def app(_, start_response):
    """Simplest possible application object"""
    data = b'Hello, World!\n'
    status = '200 OK'
    response_headers = [
        ('Content-type', 'text/plain'),
        ('Content-Length', str(len(data)))
    ]
    start_response(status, response_headers)
    return iter([data])

然后運行應用程序:

docker-compose up -d

並優雅地停止它:

docker-compose stop

版:

docker-compose version 1.12.0, build b31ff33

我寧願讓gunicorn優雅地停下來。 我認為它應該能夠基於base.py中的信號處理程序。

所有上述情況也適用於使用docker-compose up -d兩次更新圖像,第二次使用新圖像替換舊圖像。

我誤解/誤用了什么嗎? docker-compose發送什么信號來停止進程? 難道不應該使用它嗎? 我應該能夠以超過10秒的速度重啟我的應用程序嗎?

TL; DR

添加exec CMD后,在您的dockerfile: CMD exec gunicorn -b :8000 test:app

細節

我有同樣的問題,當我運行docker exec my_running_gunicorn ps aux ,我看到類似的東西:

gunicorn     1  0.0  0.0   4336   732 ?        Ss   10:38   0:00 /bin/sh -c gunicorn -c gunicorn.conf.py vision:app
gunicorn     5  0.1  1.1  91600 22636 ?        S    10:38   0:00 /usr/local/bin/python /usr/local/bin/gunicorn -c gunicorn.conf.py vision:app
gunicorn     8  0.2  2.5 186328 52540 ?        S    10:38   0:00 /usr/local/bin/python /usr/local/bin/gunicorn -c gunicorn.conf.py vision:app

1 PID不是gunicorn主機,因此它沒有收到sigterm信號。

有了Dockerfile中的exec ,我現在有了

gunicorn     1 32.0  1.1  91472 22624 ?        Ss   10:43   0:00 /usr/local/bin/python /usr/local/bin/gunicorn -c gunicorn.conf.py vision:app
gunicorn     7 45.0  1.9 131664 39116 ?        R    10:43   0:00 /usr/local/bin/python /usr/local/bin/gunicorn -c gunicorn.conf.py vision:app

它的工作原理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM