Gunicorn: websocketsκ°€ μžˆλŠ” wsgi.py에 'Response' 객체에 'status_code' 속성이 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 02μ›” 16일  Β·  36μ½”λ©˜νŠΈ  Β·  좜처: benoitc/gunicorn

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ 앱을 μ‹œμž‘ν•©λ‹ˆλ‹€.

gunicorn --worker-class eventlet -w 1 server:app --bind="127.0.0.1:5000"

그리고 μ›Ή μ†ŒμΌ“μ— Flack-SocketIOλ₯Ό μ‚¬μš©ν•  λ•Œ Gunicorn이 ν•¨μˆ˜μ—μ„œ μ œλŒ€λ‘œ λ°˜ν™˜λ˜μ§€ μ•ŠλŠ” 였λ₯˜κ°€ 자주 λ°œμƒν•©λ‹ˆλ‹€.

[2016-01-30 10:20:53 -0800] [7330] [ERROR] Error handling request
Traceback (most recent call last):
  File "/Users/brianclark/Desktop/Projects/HDP/application/api/venv/lib/python2.7/site-packages/gunicorn/workers/async.py", line 52, in handle
    self.handle_request(listener_name, req, client, addr)
  File "/Users/brianclark/Desktop/Projects/HDP/application/api/venv/lib/python2.7/site-packages/gunicorn/workers/async.py", line 114, in handle_request
    resp.close()
  File "/Users/brianclark/Desktop/Projects/HDP/application/api/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 423, in close
    self.send_headers()
  File "/Users/brianclark/Desktop/Projects/HDP/application/api/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 316, in send_headers
    tosend = self.default_headers()
  File "/Users/brianclark/Desktop/Projects/HDP/application/api/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 297, in default_headers
    elif self.should_close():
  File "/Users/brianclark/Desktop/Projects/HDP/application/api/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 230, in should_close
    if self.status_code < 200 or self.status_code in (204, 304):
AttributeError: 'Response' object has no attribute 'status_code'

이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” ꡬ성에 λŒ€ν•œ 쑰언이 μžˆμŠ΅λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ λ²„κ·Έμž…λ‹ˆκΉŒ?

Feedback Requested Discussion Investigation help wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@kramer65 μ•Œκ² μŠ΅λ‹ˆλ‹€ . λ‚˜λŠ” 이것을 μ˜€λž«λ™μ•ˆ κΈ°λ‹€λ ΈμŠ΅λ‹ˆλ‹€. μˆ˜μ • 사항이 μžˆλŠ” μ‚¬λžŒμ΄ 있으면 κ³΅μœ ν•΄ μ£Όμ„Έμš”! 감사 ν•΄μš”!

λͺ¨λ“  36 λŒ“κΈ€

@ bclark8923 문제λ₯Ό μž¬ν˜„ν•˜λŠ” 데 도움이 될 수 μžˆλŠ” μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μžˆμŠ΅λ‹ˆκΉŒ?

예! μ–΄λ–»κ²Œ ν•˜λ©΄ μ’‹μ„κΉŒμš”?

2016λ…„ 3μ›” 28일 μ›”μš”μΌ, Benoit Chesneau [email protected] 은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

@bclark8923 https://github.com/bclark8923 μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μžˆμŠ΅λ‹ˆκΉŒ?
문제λ₯Ό μž¬ν˜„ν•˜λŠ” 데 도움이 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/benoitc/gunicorn/issues/1210#issuecomment -202484667

감사 ν•΄μš”,
λΈŒλΌμ΄μ–Έ 클라크
(248) 990 5616
www.hdphealth.com

Facebook https://facebook.com/bclark8923 및 Twitterμ—μ„œ μ €λ₯Ό μ•Œμ•„λ³΄μ„Έμš”.
https://twitter.com/blaurenceclark!

@ bclark8923 μŠ€νŠΈλ¦¬λ°ν•  수 μžˆλ‹€λ©΄ κ²°κ΅­ 도움이 될 ν…ŒμŠ€νŠΈμ— 일뢀λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. :)

λ˜ν•œ μ–΄λ–€ λ²„μ „μ˜ gunicorn을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

예, λΆ€νƒν•©λ‹ˆλ‹€! [email protected]으둜 이메일을
곧

2016λ…„ 3μ›” 28일 μ›”μš”μΌ, Benoit Chesneau [email protected] 은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

@bclark8923 https://github.com/bclark8923 슀트리밍 κ°€λŠ₯ν•˜λ‹€λ©΄
κ²°κ΅­ λ‚˜λŠ” 도움이 될 ν…ŒμŠ€νŠΈμ˜ 일뢀λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€ :)

λ˜ν•œ μ–΄λ–€ λ²„μ „μ˜ gunicorn을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/benoitc/gunicorn/issues/1210#issuecomment -202492005

감사 ν•΄μš”,
λΈŒλΌμ΄μ–Έ 클라크
(248) 990 5616
www.hdphealth.com

Facebook https://facebook.com/bclark8923 및 Twitterμ—μ„œ μ €λ₯Ό μ•Œμ•„λ³΄μ„Έμš”.
https://twitter.com/blaurenceclark!

버전 19.4.5 μ‚¬μš©

같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ €λŠ” gunicorn 버전 18.0을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이미 μ‚¬μš© κ°€λŠ₯ν•œ μˆ˜μ • 사항이 μžˆμŠ΅λ‹ˆκΉŒ?

λˆ„κ΅¬λ“ μ§€ 그것을 μž¬ν˜„ ν•  z μ½”λ“œκ°€ μžˆλ‹€λ©΄ 도움이 될 κ²ƒμž…λ‹ˆλ‹€ :)

@benoitc - 말이 λ˜λ„€μš”.. ;-)

λ‹€μŒμ£Όμ— μˆ˜μ •ν•΄μ„œ μ•Œλ €λ“œλ¦΄κ»˜μš”!

@benoitc - μ’‹μ•„, κ²°κ΅­ 주말 전에 λ­”κ°€

https://github.com/kramer65/gunicorn-error 의 readmeμ—μ„œ 지침이 μžˆλŠ” 리포지토리λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

btw: μ €λŠ” gunicorn 버전 18.0을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ•„λ§ˆλ„ 무언가가 gunicorn.workers.async.ALREADY_HANDLED λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•˜κ±°λ‚˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ WSGI μ²˜λ¦¬κΈ°μ—μ„œ λ°˜ν™˜λ˜λŠ” μ¦‰μ‹œ gunicorn이 μš”μ²­μ„ κΈ°λ‘ν•˜λ €κ³  ν•  κ²ƒμž…λ‹ˆλ‹€. λŒ€μ‹  Gunicorn은 μš”μ²­μ΄ 이제 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ˜ν•΄ μ™„μ „νžˆ μ²˜λ¦¬λœλ‹€λŠ” 것을 μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

"examples/websocket" 디렉토리에 μžˆλŠ” 두 예제 λͺ¨λ‘ WSGI ν•Έλ“€λŸ¬μ—μ„œ 이 μƒμˆ˜λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

@benoitc - 였λ₯˜λ₯Ό μž¬ν˜„ν•˜λŠ” μ˜ˆμ œκ°€ 였λ₯˜λ₯Ό μ°ΎλŠ” 데 도움이 λ©λ‹ˆκΉŒ? 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 λ‹€λ₯Έ 도움을 λ“œλ¦΄ 수 μžˆμŠ΅λ‹ˆκΉŒ?

@kramer65 λ„€ 였λ₯˜λ₯Ό μž¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ Gunicorn은 μˆœμˆ˜ν•œ WSGI 엔진이며 μƒνƒœκ°€ ν¬ν•¨λœ WSGI 응닡을 κΈ°λŒ€ν•©λ‹ˆλ‹€.
https://github.com/benoitc/gunicorn/blob/master/gunicorn/http/wsgi.py#L242

(이 μ½”λ“œμ™€ κ΄€λ ¨: https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/async.py#L103-L119)

@tilgoviκ°€ λ§ν–ˆλ“―μ΄ ALREADY_HANDLEDλ₯Ό λ°˜ν™˜ν•˜μ—¬ gunicorn의 응닡 처리λ₯Ό μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ flash socketio의 μ½”λ“œλ₯Ό μ½λŠ” ν•œ socketio.Middleware engineio.middleware.Middleware μ—μ„œ μƒμ†λ˜λŠ” ν”ŒλΌμŠ€ν¬ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ λž˜ν•‘ν•©λ‹ˆλ‹€.
https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/middleware.py

경둜λ₯Ό 찾으면 wsgi μ‘μš© ν”„λ‘œκ·Έλž¨ λ˜λŠ” 자체 처리기λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/middleware.py#L45 -L52

λ”°λΌμ„œ websocket κ²½λ‘œμ—μ„œ socketio.Server.handle_request λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
https://github.com/miguelgrinberg/Flask-SocketIO/blob/master/flask_socketio/__init__.py#L144

자체적으둜 engineio.Server.handle_request λ°˜ν™˜ν•©λ‹ˆλ‹€(이 ν”„λ‘œμ νŠΈμ— λ§Žμ€ μˆœν™˜ dep...):
https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/server.py#L184

이 μ‹œμ μ—μ„œ socket.handle_get_request λ˜λŠ” socket. handle_post_request λ‘˜ λ‹€ μƒνƒœλ₯Ό μ„€μ •ν•˜μ§€ μ•Šμ€ κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.
https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/socket.py#L69 -L96

그러면 μ—¬κΈ°μ„œ 였λ₯˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/server.py#L251 -L252

μƒνƒœ 등을 μ„€μ •ν•˜μ§€ μ•Šκ³  응닡을 λ°˜ν™˜ν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. μ—…κ·Έλ ˆμ΄λ“œκ°€ 우리 μ˜ˆμ—μ„œμ™€ λ™μΌν•œ websocket 객체λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€:
https://github.com/benoitc/gunicorn/blob/master/examples/websocket/websocket.py

여기에 μ΅œμ’… r λ₯Ό λ°˜ν™˜ν•˜λŠ” λŒ€μ‹  λ‹€μŒκ³Ό 같이 μƒκ°ν•©λ‹ˆλ‹€.
https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/server.py#L251 -L252

μ•„λ§ˆλ„ λ‹€μŒκ³Ό 같이 ALREADY_HANDLED λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
https://github.com/benoitc/gunicorn/blob/master/examples/websocket/websocket.py#L115

κ·Έ μ½”λ“œλŠ” 읽기가 μƒλ‹Ήνžˆ μ–΄λ ΅κΈ° λ•Œλ¬Έμ— μ–΄μ¨Œλ“  μΆ”μΈ‘λ§Œ ν•˜μ‹­μ‹œμ˜€. μž˜ν•˜λ©΄ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

@kramer65 μ–΄μ¨Œλ“  이 ν‹°μΌ“μ˜ μƒνƒœλ₯Ό μ•Œλ €μ£Όμ„Έμš” :)

@benoitc ALREADY_HANDLED μƒμˆ˜λŠ” gunicornμ—λ§Œ ν•΄λ‹Ήλ©λ‹ˆλ‹€. Eventletμ—λŠ” λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ μ •μ˜λœ 이 μƒμˆ˜μ˜ 자체 버전이 μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œλ₯Ό 톡해 μΆ”μ ν•˜λ˜ r 값은 websocket 연결이 μ’…λ£Œλ  λ•Œ evenlet의 ALREADY_HANDLED λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이것은 eventlet에 μ˜ν•΄ μžλ™μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€: https://github.com/eventlet/eventlet/blob/2cd5f1d9aea53efb4526e7185017bdcc84732588/eventlet/websocket.py#L135.

Gunicorn은 (λ‚΄ 생각에) eventlet의 ALREADY_HANDLED μƒμˆ˜μ™€ 자체 μƒμˆ˜λ₯Ό μΈμ‹ν•˜κ³  λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ‚˜λŠ” 그것이 이 문제λ₯Ό ν•΄κ²°ν•  것이라고 μƒκ°ν•œλ‹€.

이 문제λ₯Ό ν•΄κ²°ν•  수 있으면 μ’‹μŠ΅λ‹ˆλ‹€. ν”„λ‘œλ•μ…˜μ—μ„œ flask-socketio 및 gunicorn을 μ‹€ν–‰ 쀑이며 데이터 손싀을 μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λΉ„μŠ·ν•œ 문제λ₯Ό κ²ͺκ³  μžˆλŠ”λ° 이 λ¬Έμ œμ— λŒ€ν•œ μ†Œμ‹μ΄ μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

@benoitc - Gunicorn이 eventlet의 ALREADY_HANDLED μƒμˆ˜μ™€ 자체 μƒμˆ˜λ₯Ό μΈμ‹ν•˜κ³  λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ μœ„μ˜ @miguelgrinberg κ°€ μ œμ•ˆν•œ μ œμ•ˆμ΄ 쒋은 생각이라고 μƒκ°ν•˜μ‹­λ‹ˆκΉŒ?

@kramer65 이에 λŒ€ν•œ 지원을 κΉ”λ”ν•˜κ²Œ μΆ”κ°€ν•  수 μžˆλŠ” 방법을 찾을 수 μžˆλ‹€λ©΄ eventlet μž‘μ—…μžκ°€ μ²˜λ¦¬ν•˜λŠ” 것이 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€.

μ§€κΈˆ λ‹Ήμž₯은 이것을 μ²˜λ¦¬ν•˜λŠ” 논리가 gunicorn.workers.async.AsyncWorker#handle_request 내뢀에 μ•½κ°„ λ¬»ν˜€ μžˆμ§€λ§Œ μ΄λ²€νŠΈλ › μž‘μ—…μžκ°€ μž¬μ •μ˜ν•  수 μžˆλŠ” 정적 속성을 톡해 κ°„μ ‘μ μœΌλ‘œ μ²˜λ¦¬ν•˜κ±°λ‚˜ λͺ¨λ“  μž‘μ—…μžκ°€ 이미 μ²˜λ¦¬ν•œ 것을 ν™•μΈν•˜λŠ” μΈμŠ€ν„΄μŠ€ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬μ™€ ​​같이 κΈ°λ³Έ ν΄λž˜μŠ€κ°€ μˆ˜ν–‰λ˜λŠ” νŠΉμ • 논리가 μ‘΄μž¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@tilgovi - μ…¨λŠ”λ° μ΄λ ‡κ²Œ λ‹΅μž₯을 λ“œλ¦¬κ³  μ‹Άμ—ˆμ–΄μš”. λ¬Έμ œλŠ” λ‚΄κ°€ ν•  수 μžˆλŠ” 일에 ν•œκ³„κ°€ μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ–΄λ–»κ²Œ 진행해야 할지 정말 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

κ·Έλ™μ•ˆ λ‚΄ λ‘œκ·ΈλŠ” μ•„λž˜μ™€ 같은 였λ₯˜ λ©”μ‹œμ§€λ‘œ 가득 μ°¨ μžˆμœΌλ―€λ‘œ 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ•½κ°„μ˜ μ—λ„ˆμ§€λ₯Ό μŸμ•„μ•Ό ν•  μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 문제의 μ •ν™•ν•œ 원인이 무엇인지 μ™„μ „νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κ³  μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆλŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€.

연락을 μ›ν•˜λŠ” μ‚¬λžŒμ΄ μžˆλ‹€λ©΄ 기꺼이 이 λ¬Έμ œμ— λŒ€ν•΄ λ…Όμ˜ν•˜κ³  μ§€κΈˆλ³΄λ‹€ 쑰금 더 도움을 λ“œλ¦΄ 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

2016-08-23 08:07:16 [2185] [ERROR] Error handling request
Traceback (most recent call last):
  File "/var/www/imd/venv/local/lib/python2.7/site-packages/gunicorn/workers/async.py", line 45, in handle
    self.handle_request(listener, req, client, addr)
  File "/var/www/imd/venv/local/lib/python2.7/site-packages/gunicorn/workers/async.py", line 102, in handle_request
    resp.close()
  File "/var/www/imd/venv/local/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 369, in close
    self.send_headers()
  File "/var/www/imd/venv/local/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 284, in send_headers
    tosend = self.default_headers()
  File "/var/www/imd/venv/local/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 265, in default_headers
    elif self.should_close():
  File "/var/www/imd/venv/local/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 198, in should_close
    if self.status_code < 200 or self.status_code in (204, 304):
AttributeError: 'Response' object has no attribute 'status_code'

ν•˜λ‚˜ κ³ μ³€μ–΄? .....

@qwexvf - λΆˆν–‰νžˆλ„ λ‚˜λŠ”ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ‚΄ λ‘œκ·ΈλŠ” μ—¬μ „νžˆ 였λ₯˜λ‘œ 가득 μ°¨ μžˆμŠ΅λ‹ˆλ‹€. :-(

λ‹€λ₯Έ μ‚¬λžŒ?

@kramer65 μ•Œκ² μŠ΅λ‹ˆλ‹€ . λ‚˜λŠ” 이것을 μ˜€λž«λ™μ•ˆ κΈ°λ‹€λ ΈμŠ΅λ‹ˆλ‹€. μˆ˜μ • 사항이 μžˆλŠ” μ‚¬λžŒμ΄ 있으면 κ³΅μœ ν•΄ μ£Όμ„Έμš”! 감사 ν•΄μš”!

μ–΄λ–€ μ—…λ°μ΄νŠΈ?

이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλŠ” 더 κΉ¨λ—ν•œ 방법이 μžˆλ‹€κ³  ν™•μ‹ ν•˜μ§€λ§Œ 적어도 μ‹œμž‘ λ‹¨κ³„μž…λ‹ˆλ‹€.

@stefaang κ°μ‚¬ν•©λ‹ˆλ‹€ 생각해

이에 λŒ€ν•œ μˆ˜μ • 사항은 μ–Έμ œ PyPIμ—μ„œ μΆœμ‹œλ©λ‹ˆκΉŒ?

내일
2017λ…„ 2μ›” 17일 κΈˆμš”μΌ 16μ‹œ 46뢄에 Eddie [email protected]이 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

이에 λŒ€ν•œ μˆ˜μ • 사항은 μ–Έμ œ PyPIμ—μ„œ μΆœμ‹œλ©λ‹ˆκΉŒ?

β€”
μ—΄κΈ°/λ‹«κΈ° μƒνƒœλ₯Ό μˆ˜μ •ν–ˆκΈ° λ•Œλ¬Έμ— 이 λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/benoitc/gunicorn/issues/1210#issuecomment-280685264 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AAA4ogTRMF7EfR25G6gLrktOdh_iA4Ciks5rdcDYgaJpZM4HbcdP
.

μΆœμ‹œλ˜μ—ˆλ‚˜μš”?

@benoitc pypi둜 ν‘Έμ‹œλ˜λŠ” μ—…λ°μ΄νŠΈμ— λŒ€ν•œ 단어가 μžˆμŠ΅λ‹ˆκΉŒ?

@defionscode λ‚˜λŠ” λͺ©μš”일 μ•„μΉ¨(내일)에 릴리슀λ₯Ό ν•  κ²ƒμž…λ‹ˆλ‹€.

ν›Œλ₯­ ν•΄μš”, κ³ λ§™μŠ΅λ‹ˆλ‹€
2017λ…„ 2μ›” 22일 μˆ˜μš”μΌ μ˜€μ „ 11:54 Benoit Chesneau [email protected]
썼닀:

@defionscode https://github.com/defionscode 에 λ¦΄λ¦¬μŠ€ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.
λͺ©μš”일 μ•„μΉ¨(내일).

β€”
당신이 μ–ΈκΈ‰λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것을 λ°›λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ 확인
https://github.com/benoitc/gunicorn/issues/1210#issuecomment-281729992 ,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AEcrYp6QfVpWXhG14f4M-lPDHMn0cFncks5rfGhWgaJpZM4HbcdP
.

이 μˆ˜μ • 사항이 릴리슀 λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?

@Decker108 μƒνƒœλŠ” https://github.com/benoitc/gunicorn/issues/1471 μ—μ„œ μΆ”μ ν•©λ‹ˆλ‹€. 였늘 λ°œλ§€λ©λ‹ˆλ‹€...

이 λ²„κ·ΈλŠ” gunicorn의 μ΅œμ‹  버전 19 및 20μ—μ„œ μ—¬μ „νžˆ λ°œμƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. @benoitc 라고 μˆ˜μ •

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰