Pullo käsittelee suurta samanaikaisuutta ja monisäikeisyyttä

Flask Handles High Concurrency



Esipuhe:
Kun käytät pulloa palveluna, voit käyttää python run.py -ohjelmaa suorittamiseen, mutta sitä ei voida käyttää tuotantoympäristössä, eikä yhteys voi vastata. Myöhemmin tietoa hakemalla huomasin, että pullopalvelu hoitaa monisäikeisen ja suuren samanaikaisuuden pääasiassa seuraavissa asioissa:

1. Asettamalla app.run () -parametrit monisäikeisen vaikutuksen aikaansaamiseksi, erityiset parametrit:



# 1.threaded: Multithreading support, the default is False, that is, multithreading is not enabled app.run(threaded=True) # 2.processes: the number of processes, the default is 1. app.run(processes=True) ps: Multi-process or multi-thread can only choose one, not at the same time

2. Käytä genventiä korutiinina korkean samanaikaisuuden ratkaisemiseksi:



from genvent.wsgi import WSGIServer from genvent import monkey monkey.patch_all() app = Flask(__name__) app.config.from_object(config) api = Api(app) db = DBInfo() # db_old = DBInfo_old()

Kääri sitten WSGIServer ((osoite, portti), sovellus) .serve_forever () tällä tavalla
Käynnistä palvelu käyttämällä python code.py -ohjelmaa



3. Pakkaa sovellus Guicorn-muodossa (genventin kanssa) palvelun aloittamiseksi
Käytä koodia aloittaaksesi projektin

# Start command gunicorn -c gun.py thread_explore:app

Missä gun.py on pistoolin asetustiedosto
thread_explore on palvelun pääohjelma
sovellus on pullon sovellus
Gun.py: n erityinen sisältö:

import os import gevent.monkey gevent.monkey.patch_all() import multiprocessing # Service address (adderes:port) bind = 127.0.0.15000 # Number of startup processes workers = multiprocessing.cpu_count() * 2 +1 worker_class = 'gevent' threads = 20 preload_app = True reload = True x_forwarded_for_header = 'X_FORWARDED-FOR'

ps: Käynnistysprosessien lukumäärä tulisi määrittää tässä prosessorien lukumäärän mukaan, mieluiten 2 * suorittimien lukumäärä + 1
Referenssimateriaalit:
https://www.jianshu.com/p/a90775e33b52
https://www.cnblogs.com/lesliexong/p/9396850.html





Linkki: https://www.jianshu.com/p/79489cfc6fb9