HKS 27D Posted February 1 Posted February 1 Open-source CSGO/CS2 server status GitHub repository: https://github.com/hks27d/PythonDiscordServerStatus Monitorizati numarul de jucatori si harta curenta a serverului de CSGO/CS2 si afisati informatiile la statusul aplicatiei de discord. Aplicatia CSGO/CS2 Server status este scrisa in Python, utilizand framework-ul discord.py si libraria python-a2s. Simtiti-va liberi sa alterati liniile de cod pentru a se potrivi nevoilor voastre specifice. Codul este simplu si usor de inteles pentru incepatori, asigurand o intelegere rapida a functionalitatii si posibilitatati de modificare, in timp ce este potrivit pentru implementari mult mai complexe realizate de programatori mai experimentati. Caracteristici principale Pythonic code style Code linted with Ruff (a Rust-powered VS Code extension) Minimal terminal output Rotating logging handler for exceptions Consistent logging template for Discord client runtime Graceful exits with status code 1 for critical failures Software comunitate In cazul in care va intrebati daca FAIRSIDE ROMANIA utilizeaza software scris in Python in productie, raspunsul depinde de mai multi factori. Obisnuiam sa avem aplicatii scrise in Python pana cand consumul CPU si RAM ne-au convins ca e cazul sa migram catre limbaje de programare compilate. Am mers asadar cat mai aproape de assembly, spre C++ si Go, ramanand in cele din urma cu Go pentru readability si maintainability si alegand alte limbaje in functie de use-case in loc sa ne limitam singuri. Mai concret: avand peste 30 de aplicatii de discord active care ruleaza in productie si stiind ca majoritatea nu fac lucruri simple => am decis ca e cazul sa renuntam la limbaje de programare interpretate in diverse circumstante, limbaje care pe langa downside-urile de performanta, unele mai sunt si dynamically-typed, ceea ce inseamna un chin pentru partea de maintainability, readability si timpul alocat. Rezultatele de mai jos acopera in linii mari performanta si consumul de la fiecare limbaj in parte, plus overhead-ul produs de framework-urile necesare pentru comunicarea cu Discord API. Este important de mentionat faptul ca outcome-ul este influentat in mare masura mare de calitatea codului din aceste framework-uri, dar tineti cont ca limbajele de programare joaca rolul principal. Fairside benchmarks Python: 40.00 MB, Δt >= 5000 ms (rezultate extrem de slabe overall) GO: 7.00 MB, Δt >= 3 ms (rezultate exceptionale cu tot cu garbage collector) C++: 4.50 MB, Δt >= 1 ms (rezultate mai bune fata de mentiunile din documentatia framework-ului) Benchmarks key points Masurarea memoriei a fost realizata pe baza /proc filesystem, o componenta din Linux Kernel care furnizeaza informatii real-time catre userspace Rezultatele sunt apropiate de realitatea din productie cu uptime extins comparativ cu benchmark-uri anterioare realizate de noi Echivalarea sau lipsa echivalarii de event calls nu schimba semnificativ rezultatele Calcul pe exemplul nostru Valorile de consum RAM per limbaj reprezinta puncte de referinta. Consumul real din productie la uptime extins poate varia. Python: 40MB * 30 de aplicatii = 1.2GB consum RAM Go: 7MB * 30 de aplicatii = 210MB consum RAM C++: 5MB * 30 de aplicatii = 150MB consum RAM Daca luam in calcul Δt pentru startup, consumul RAM si timpul alocat executiei functiilor definite de noi in aplicatiile pe care le administram, ajungem la concluzia ca Python nu e un limbaj de programare suitable pentru nevoile noastre. Acesta este si motivul pentru care comunitatea noastra nu mai ruleaza software bazat pe Python in productie decat in cazuri specifice, acestea referindu-se mai mult la partea de backend scripting si unele automatizari. Totusi, chiar si acolo preferam cu totul alte limbaje, in general. Comparativ cu noi, e posibil ca voi sa nu aveti aceleasi nevoi, motiv pentru care e irelevant daca software-ul vostru e scris in Python sau alt limbaj mai apropiat de assembly ca nivel de abstractizare. 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now