/
Flyer
/
library-api
Обзор
Документация
Войти
/
Flyer
/
library-api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
task-9
sales_analytics/batch.py
30 строк
956 B
Alex
Task 9: Streaming and batch sales analytics
02 июн 2026, 19:48
02 июн 2026, 19:48
febbadd
Код
Авторство
О чём код?
import redis from datetime import datetime REDIS_HOST = "localhost" REDIS_PORT = 6379 STREAM_KEY = "sales" r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, decode_responses=True) def run_batch(): messages = r.xrange(STREAM_KEY, min='-', max='+') total_revenue = 0.0 book_sales = {} # book_id -> quantity for _, fields in messages: book_id = fields.get("book_id") price = float(fields.get("price", 0)) total_revenue += price book_sales[book_id] = book_sales.get(book_id, 0) + 1 print("=== BATCH REPORT ===") print(f"Total messages: {len(messages)}") print(f"Total revenue: {round(total_revenue, 2)}") print("Top 5 books by sales count:") sorted_books = sorted(book_sales.items(), key=lambda x: x[1], reverse=True)[:5] for book_id, count in sorted_books: print(f"Book {book_id}: {count} sales") print("====================") if __name__ == "__main__": run_batch()