以gevent(協程) 方式跑uwsgi服務


當你的系統存在一些IO或網絡請求較久的操作時, 如果以默認的方式啟動uwsgi服務,
那么如果這類請求過多的時候, 所以進程被卡死. uwsgi就無法再對后續請求做處理了.

這時可以用gevent的方式跑起uwsgi服務, 這樣當某個請求在IO或網絡請求中時, uwsgi進程可以去處理其他的請求.

如果環境沒裝gevent的話需要先安裝gevent:

pip install gevent

啟動方式:

uwsgi --gevent 100 --gevent-early-monkey-patch uwsgi.ini 

順便把uwsgi文件的配置也放出來下:

[uwsgi]

base = path
chdir = path wsgi-file = manage.py callable = app pidfile = project_pid master = true processes = 4 socket = 0.0.0.0:8080 # http = 0.0.0.0:8080 vacuum = true buffer-size = 32768 listen = 1024 # log-reopen = true # daemonize = %(base)/logs/project.log 

supervisor配置如下:

[program:project] process_name=%(program_name)s command=/home/ubuntu/.virtualenvs/project/bin/uwsgi --gevent 100 --gevent-early-monkey-patch /var/www/prod/project/uwsgi.ini autostart=true autorestart=true stopsignal=QUIT user=root numprocs=1 redirect_stderr = true stdout_logfile=/var/log/python/project.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=5

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM