In un primo momento, penso Bottiglia gestirà le richieste contemporaneamente, così ho scritto il codice di prova sotto:La bottiglia gestisce le richieste senza concorrenza?
import json
from bottle import Bottle, run, request, response, get, post
import time
app = Bottle()
NUMBERS = 0
@app.get("/test")
def test():
id = request.query.get('id', 0)
global NUMBERS
n = NUMBERS
time.sleep(0.2)
n += 1
NUMBERS = n
return id
@app.get("/status")
def status():
return json.dumps({"numbers": NUMBERS})
run(app, host='0.0.0.0', port=8000)
allora io uso jmeter richiedere /test
URL con 10 thread loop 20 volte.
Successivamente, /status
mi dà {"numbers": 200}
, che sembra che quella bottiglia non gestisca le richieste contemporaneamente.
Ho frainteso qualcosa?
UPDATE
ho fatto un altro test, credo si possa dimostrare che si occupano bottiglia con le richieste di uno ad uno (senza concorrenza). Ho fatto un piccolo cambiamento alla funzione test
:
@app.get("/test")
def test():
t1 = time.time()
time.sleep(5)
t2 = time.time()
return {"t1": t1, "t2": t2}
E quando accedo /test
due volte in un browser ottengo:
{
"t2": 1415941221.631711,
"t1": 1415941216.631761
}
{
"t2": 1415941226.643427,
"t1": 1415941221.643508
}
'200' è il codice HTTP per il segnale OK http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html – Nilesh
@Lafada Oh, lascia che sia più chiaro,'/status' mi dà ' {"numeri": 200} ' – WKPlus
ora possiamo dare una risposta corretta :) – Nilesh