Rate-Limit-Demo / app.py
Bertug1911's picture
Update app.py
36fc49e verified
import subprocess
import sys
import time
from collections import defaultdict, deque
# Gerekli kütüphane varsa geç, yoksa kur
def install(package):
try:
__import__(package)
except ImportError:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
install("gradio")
import gradio as gr
# Kullanıcı başına tıklama logları
click_logs = defaultdict(deque)
MAX_CLICKS = 5
WINDOW_SECONDS = 60
def generate_output(session_id):
now = time.time()
logs = click_logs[session_id]
# Süresi geçmiş tıklamaları temizle
while logs and now - logs[0] > WINDOW_SECONDS:
logs.popleft()
if len(logs) >= MAX_CLICKS:
return f"⛔ You can only click {MAX_CLICKS} times in a minute!"
logs.append(now)
return f"✅ Generation succesful! ({len(logs)}/{MAX_CLICKS})"
with gr.Blocks() as app:
session_id = gr.State(str(time.time())) # Basit oturum kimliği
output = gr.Textbox(label="Result")
button = gr.Button("Test!")
button.click(fn=generate_output, inputs=[session_id], outputs=output)
app.launch()