Lúc đầu, tôi nghĩ rằng Chai sẽ xử lý yêu cầu đồng thời, vì vậy tôi đã viết mã kiểm tra dưới đây:Có yêu cầu xử lý chai không có đồng thời không?
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)
Sau đó, tôi sử dụng JMeter để yêu cầu /test
url với 10 chủ đề vòng 20 lần.
Sau đó, /status
cho tôi {"numbers": 200}
, có vẻ như chai đó không xử lý yêu cầu đồng thời.
Tôi có hiểu lầm gì không?
CẬP NHẬT
tôi đã làm thử nghiệm khác, tôi nghĩ rằng nó có thể chứng minh rằng thỏa thuận chai với yêu cầu từng người một (không đồng thời). Tôi đã làm một sự thay đổi nhỏ đến test
chức năng:
@app.get("/test")
def test():
t1 = time.time()
time.sleep(5)
t2 = time.time()
return {"t1": t1, "t2": t2}
Và khi tôi truy cập /test
hai lần trong một trình duyệt tôi nhận được:
{
"t2": 1415941221.631711,
"t1": 1415941216.631761
}
{
"t2": 1415941226.643427,
"t1": 1415941221.643508
}
'200' là Mã HTTP cho tín hiệu OK http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html – Nilesh
@Lafada Ồ, hãy để tôi làm rõ hơn,'/status' cho tôi ' {"numbers": 200} ' – WKPlus
bây giờ chúng ta có thể trả lời đúng :) – Nilesh