flask_socketio + flask + gunicorn + nginx로 502 개의 잘못된 게이트웨이와 400 개의 잘못된 요청 받기

얇은

그래서 저는 flask + flask_socketio + eventlet + gunicorn + nginx로 웹 사이트를 만들었습니다. 이 구성에 대한 flask_socketio에 대한 설명서를 살펴 보았으며 지원됩니다. 웹 사이트를 사용한 후 flask가 완벽하게 작동하지만 flask_socketio는 전혀 작동하지 않는다는 것을 알았습니다. 다음은 관련 구성 및 오류 코드입니다. 일부 flask_socketio 비트 게시 요청이 200 OK로 진행된다는 점에 유의하고 싶습니다.
이것은 우분투 18.04
Nginx에 있습니다.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 65535;
    multi_accept on;
}

http {

    ##
    # Basic Settings
    ##
    charset utf-8;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    server_tokens off;
    log_not_found off;
    client_max_body_size 16M;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##
server {
    listen 80;
    server_name http://compoundingly.com;

    location / {
        proxy_pass http://0.0.0.0:5000;
    proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /static {
        alias /home/shorya/compoundingly_website/compoundingly_code/static;
        expires 30d;
    }
    location /socket.io {
        include proxy_params;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass http://0.0.0.0:5000/socket.io;
    }
}

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}



Gunicorn 서비스

[Unit]
Description=Gunicorn instance to serve myproject
Requires=gunicorn.socket
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/home/shorya/compoundingly_website/compoundingly_code
Environment="PATH=/home/shorya/compoundingly_website/compoundingly_code/compoundingly_venv/bin"
ExecStart=/home/shorya/compoundingly_website/compoundingly_code/compoundingly_venv/bin/gunicorn -k eventlet --workers 3 --bind unix:compoundingly_code.sock -m 007 wsgi:app
Restart=on-failure
[Install]
WantedBy=multi-user.target

wsgi.py

from app import app

if __name__ == "__main__":
    app.run()

pip3 동결

click==7.1.2
dnspython==1.16.0
eventlet==0.26.1
Flask==1.1.2
Flask-SocketIO==4.3.1
greenlet==0.4.16
gunicorn==19.7.1
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
monotonic==1.5
pkg-resources==0.0.0
python-engineio==3.13.1
python-socketio==4.6.0
six==1.15.0
Werkzeug==1.0.1

실패한 요청

URL: http://compoundingly.com/socket.io/?EIO=3&transport=polling&t=NFGwVcP&sid=22ad9ddeaffe4eeb8525927aca86806b
Status: 400 BAD REQUEST
Source: Network
Address: 192.241.149.99:80
Initiator: 
index.js:83

좋은 요청

URL: http://compoundingly.com/socket.io/?EIO=3&transport=polling&t=NFGwVtd
Status: 200 OK
Source: Network
Address: 192.241.149.99:80
Initiator: 
index.js:83

502 잘못된 게이트웨이 요청

URL: http://compoundingly.com/socket.io/?EIO=3&transport=polling&t=NFGwdji&sid=69f16b45a1aa474294cdeb2452f0e71a
Status: 502 Bad Gateway
Source: Network
Address: 192.241.149.99:80
Initiator: 
index.js:83

Gunicorn 오류 로그


Aug 08 22:09:16 sm01 gunicorn[1956]: [2020-08-08 22:09:16 -0400] [5964] [INFO] Booting worker with pid: 5964
Aug 08 22:09:47 sm01 gunicorn[1956]: [2020-08-08 22:09:47 -0400] [1956] [CRITICAL] WORKER TIMEOUT (pid:5962)
Aug 08 22:09:47 sm01 gunicorn[1956]: [2020-08-08 22:09:47 -0400] [5962] [INFO] Worker exiting (pid: 5962)
Aug 08 22:09:47 sm01 gunicorn[1956]: [2020-08-08 22:09:47 -0400] [5977] [INFO] Booting worker with pid: 5977
Aug 08 22:09:48 sm01 gunicorn[1956]: [2020-08-08 22:09:48 -0400] [1956] [CRITICAL] WORKER TIMEOUT (pid:5963)
Aug 08 22:09:48 sm01 gunicorn[1956]: [2020-08-08 22:09:48 -0400] [1956] [CRITICAL] WORKER TIMEOUT (pid:5964)
Aug 08 22:09:48 sm01 gunicorn[1956]: [2020-08-08 22:09:48 -0400] [5963] [INFO] Worker exiting (pid: 5963)
Aug 08 22:09:48 sm01 gunicorn[1956]: [2020-08-08 22:09:48 -0400] [5964] [INFO] Worker exiting (pid: 5964)
Aug 08 22:09:48 sm01 gunicorn[1956]: [2020-08-08 22:09:48 -0400] [5981] [INFO] Booting worker with pid: 5981
Aug 08 22:09:48 sm01 gunicorn[1956]: [2020-08-08 22:09:48 -0400] [5982] [INFO] Booting worker with pid: 5982

이 같은 문제에 직면 한 사람들을 위해이 작업을 수행 한 후 시스템이 작동하도록하기 위해 수행 할 수있는 몇 가지 작업이 있습니다. 내 wsgi를 다음과 같이 변경했습니다.

from app import *

if __name__ == "__main__":
    #app.run()
    app = Flask(__name__)#,template_folder="./dist/app/templates"
    app.config['SECRET_KEY'] = 'secret!'
    socketio = SocketIO(app,async_mode="eventlet")
    socketio.run(app,host="0.0.0.0",port=5000,debug=True)

gunicorn 명령에 --bind 0.0.0.0:5000을 추가했습니다.
또한 최신 버전의 gunicorn을 다운로드했지만 최신 버전은 다운로드하지 않았습니다.
19.7 작동하지 않음
20.0.3 작동 20.0.4 작동
하지 않음

미겔

eventlet으로 Gunicorn을 실행하는 방법 설명서참조하십시오 . 특히 지원되지 않는 여러 작업자를 사용하고 있습니다.

문서에서 지원되는 구성 예 :

gunicorn --worker-class eventlet -w 1 module:app

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관