Konuyu Açan
#0
Hız sınırlaması, uygulamalarınızda belirli bir işlem veya fonksiyonun belirli bir süre içinde kaç kez çalışabileceğini kontrol etmenizi sağlar. Bu, özellikle API çağrıları gibi belirli bir süre içinde sınırlı erişim gerektiren durumlarda oldukça faydalıdır. Python’da hız sınırlaması uygulamak için birkaç yöntem bulunmaktadır. Bu yazıda, basit bir hız sınırlama uygulaması için bir örnek vereceğim.
İlk olarak,
Aşağıda, bu işlevselliği sağlayan bir
Bu örnekte,
Hız sınırlaması uygulamaları, API’ler aracılığıyla yapılan veri çekimlerinde veya belirli bir işlem yoğunluğuna sahip uygulamalarda büyük önem taşır. Bu tür bir uygulama ile sistem kaynaklarınızı daha verimli kullanabilir, aşırı yüklenmeleri engelleyebilirsiniz.
Sizin hız sınırlaması uygulamalarında karşılaştığınız zorluklar neler? Farklı yöntemler veya kütüphaneler kullanıyor musunuz? Deneyimlerinizi paylaşmanızı bekliyorum.
İlk olarak,
time modülünü kullanarak belirli bir süre zarfında çağrılan fonksiyonları sınırlayacağız. Örneğin, bir fonksiyonun bir dakikada en fazla 5 kez çağrılmasına izin vermek isteyelim. Aşağıda, bu işlevselliği sağlayan bir
RateLimiter sınıfının basit bir örneği bulunmaktadır:CODE
12345678910111213141516171819202122232425262728
import time
class RateLimiter:
def [b]init[/b](self, rate: int, per: int):
self.rate = rate
self.per = per
self.calls = []
def is_allowed(self) -> bool:
current_time = time.time()
# Eski çağrıları temizle
self.calls = [call for call in self.calls if call > current_time - self.per]
if len(self.calls) < self.rate:
self.calls.append(current_time)
return True
return False
[b]Kullanım örneği[/b]
limiter = RateLimiter(rate=5, per=60) # 60 saniyede 5 çağrı izni
for i in range(10):
if limiter.is_allowed():
print(f"{i + 1}. işlem gerçekleştirildi.")
else:
print(f"{i + 1}. işlem reddedildi: Hız sınırı aşıldı.")
time.sleep(10) # Her işlemden sonra 10 saniye bekle
Bu örnekte,
RateLimiter sınıfı, belirli bir süre içinde kaç kez işlem yapılabileceğini kontrol eder. is_allowed metodu çağrıldığında, mevcut zaman kontrol edilir ve daha önce yapılan çağrılar temizlenir. Eğer çağrı sayısı belirlenen sınırdan azsa, çağrı kabul edilir; aksi takdirde reddedilir.Hız sınırlaması uygulamaları, API’ler aracılığıyla yapılan veri çekimlerinde veya belirli bir işlem yoğunluğuna sahip uygulamalarda büyük önem taşır. Bu tür bir uygulama ile sistem kaynaklarınızı daha verimli kullanabilir, aşırı yüklenmeleri engelleyebilirsiniz.
Sizin hız sınırlaması uygulamalarında karşılaştığınız zorluklar neler? Farklı yöntemler veya kütüphaneler kullanıyor musunuz? Deneyimlerinizi paylaşmanızı bekliyorum.