Fastapi Stres Testi
çekirge piton
Ölçeklenebilirlik testi, web hizmeti üretimine hazır olmanın önemli bir parçasıdır. Gatling, Apache JMeter, The Grinder, Tsung ve diğerleri gibi yük testi için pek çok araç var. Ayrıca Python'da yazılmış ve İstekler kitaplığı üzerine oluşturulmuş bir tane (ve benim favorim) var: Locust .
Locust web sitesinde fark edildiği gibi:
Locust'un temel bir özelliği, tüm testinizi Python kodunda tanımlamanızdır. Hantal kullanıcı arayüzlerine veya şişirilmiş XML'e gerek yok, sadece düz kod.
çekirge kurulumu
Performans testi python modülü Locust, PyPI'de mevcuttur ve pip veya easy_install aracılığıyla kurulabilir.
pip install locustio or: easy_install locust
Örnek locustfile.py
Ardından, docs örneğini izleyerek locustfile.py dosyasını oluşturun. Django projesini test etmek için csrftoken desteği ve ajax istekleri için bazı başlıklar eklemek zorunda kaldım. Nihai locustfile.py aşağıdakine benzer bir şey olabilir:
# locustfile.py
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
self.login()
def login(self):
# GET login page to get csrftoken from it
response = self.client.get('/accounts/login/')
csrftoken = response.cookies['csrftoken']
# POST to login page with csrftoken
self.client.post('/accounts/login/',
{'username': 'username', 'password': 'P455w0rd'},
headers={'X-CSRFToken': csrftoken})
@task(1)
def index(self):
self.client.get('/')
@task(2)
def heavy_url(self):
self.client.get('/heavy_url/')
@task(2)
def another_heavy_ajax_url(self):
# ajax GET
self.client.get('/another_heavy_ajax_url/',
headers={'X-Requested-With': 'XMLHttpRequest'})
class WebsiteUser(HttpLocust):
task_set = UserBehavior
Locust'u yukarıdaki python locust dosyasıyla çalıştırmak için, eğer dosya locustfile.py olarak adlandırılmışsa , şunu çalıştırabiliriz ( locustfile.py ile aynı dizinde ):
locust --host=http://example.com
Python yük testi uygulaması Locust başlatıldığında ziyaret etmelisinizhttp://127.0.0.1:8089/ve orada Locust örneğimizin web arayüzünü bulacaksınız. Ardından simüle edilecek kullanıcı sayısını (örn. 300) ve Hatch oranını (üreyen kullanıcı/saniye) (örn. 10) girin ve Swarming'i Başlat'a basın . Bundan sonra Locust, kullanıcıları “kuluçkadan çıkarmaya” başlayacak ve sonuçları tabloda görebileceksiniz.
Python Veri Görselleştirme
Yani, tablo güzel ama sonuçları bir grafik üzerinde görmeyi tercih ederiz. İnsanların Locust'a grafiksel arayüz eklemek istedikleri bir sorun var ve Locust verileri için grafiklerin nasıl görüntüleneceğine dair çeşitli önermeler var. Python etkileşimli görselleştirme kitaplığı Bokeh kullanmaya karar verdim .
Python grafik kitaplığı Bokeh'i PyPI'den pip kullanarak kurmak kolaydır:
pip install bokeh
İşte Bokeh sunucusunu çalıştırmanın bir örneği .
Locust verilerini ziyaret ederek JSON formatında alabiliriz.http://localhost:8089/stats/requests. Veriler şöyle bir şey olmalı:
{
"errors": [],
"stats": [
{
"median_response_time": 350,
"min_response_time": 311,
"current_rps": 0.0,
"name": "/",
"num_failures": 0,
"max_response_time": 806,
"avg_content_length": 17611,
"avg_response_time": 488.3333333333333,
"method": "GET",
"num_requests": 9
},
{
"median_response_time": 350,
"min_response_time": 311,
"current_rps": 0.0,
"name": "Total",
"num_failures": 0,
"max_response_time": 806,
"avg_content_length": 17611,
"avg_response_time": 488.3333333333333,
"method": null,
"num_requests": 9
}
],
"fail_ratio": 0.0,
"slave_count": 2,
"state": "stopped",
"user_count": 0,
"total_rps": 0.0
}
Hep birlikte koşmak
Yani Locust'umuz çalışıyor (hayır ise, ile başlatın ) ve şimdi ile locust --host=http://example.combaşlamalı ve ardından çizici.py ile çalıştırmalıyız . Komut dosyası çağrılarımızın gösterdiği gibi , belgeyi görüntülemek için doğru URL'ye otomatik olarak bir tarayıcı sekmesi açılır.Bokehserverbokeh servepython plotter.py
Locust zaten testi yapıyorsa, sonuçları hemen grafiklerde göreceksiniz. Aksi takdirde şu adreste yeni bir test başlatın:http://localhost:8089/ve Bokeh sekmesine dönün ve test sonuçlarını gerçek zamanlı olarak izleyin.
Bu kadar. Kodun tamamını github'da bulabilirsiniz . Kopyalayıp örneği çalıştırmaktan çekinmeyin.
git clone https://github.com/steelkiwi/locust-bokeh-load-test.git
cd locust-bokeh-load-test
pip install -r requirements.txt
locust --host=<place here link to your site>
bokeh serve
python plotter.py

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































