2015-09-29 16:28 GMT+02:00 Pavel Schön <pa...@schon.cz>: > Moje knihovna nikdy nebyla nasazena v produkci, je to ciste experimentalni > zalezitost, hricka pro studijni ucely. Autor puvodniho dotazu hleda neco pro > studijni a vyukove ucely, pokud se nepletu.
Obzvlast pro vyukove ucely je skutecne vhodne vybrat dobra reseni, v tomto pripade tedy neco ze std knihovny nebo neco co funguje a plni sliby Nejhorsi co se muze stat je, ze se nekdo nauci spatne postupy a principy, proto je vzdy dulezite, obcas i za cenu komplexity (django vs flask) nebo extra zavislosti (gunicorn nebo twisted na normalni server vs custom tcp socket), zvolit reseni ktere podporuje dobre navyky. V tomhle pripade je dobry navyk i nevynalezat kolo. > Server si v zadnem pripade nepamatuje stav zamku pri restartu, klientska cast > neresi vypadky spojeni, neimplementuje reconnect apod. Pokud nastane chyba v > TCP, na strane klienta se vyhodi vyjimka socket.error a je jen na nem, jak se > zachova. > > Knihovna take neresi deadlock, ale to ani normalni threading neresi > deadlocky. Jejich predchazeni je uz mimo ramec teto diskuze. > > BTW, nad jednoduchym lockem lze stavet vyssi primitiva, semafory apod. > > > Dne úterý 29. září 2015 15:51:15 UTC+2 Petr Messner napsal(a): >> Zajímavý kus kódu. Co se stane, když se server restartuje, zůstane stav >> zámků zachován? Co se stane, když klient požádá o acquire a musí čekat, >> protože zámek má již někdo jiný, ale zrovna v tu chvíli vypadne síť, spojení >> se ukončí a recv() vrátí prázdný řetězec? >> >> >> Když už řešit zamykání takhle síťově, tak aspoň pořádně :) Viz např. Redis >> (http://antirez.com/news/77) Apache Zookeeper, Apache Helix... >> >> >> Bohužel, distribuované algoritmy nejsou tak jednoduché, že by do >> "normálního" algoritmu stačilo přidat sokety. >> >> >> PM >> >> >> Dne 29. září 2015 15:30 Pavel Schön <pa...@schon.cz> napsal(a): >> Ahoj, >> >> >> >> dovolim si navrhnout pure python reseni na strane serveru zalozene na >> threadingu a lockach. Kdysi jsem napsal jednoduchy lock manager. Viz: >> >> >> >> http://code.activestate.com/recipes/578194-distributed-lock-manager-for-python/ >> >> >> >> Ve zkratce: >> >> >> >> - na serveru bezi TCP daemon (./dlm.py), ktery obsluhuje klienty. >> >> - na klienty umistis tentyz soubor dlm.py, ktery si klientska aplikace >> importne a vola podle potreby. >> >> >> >> Aplikace potom funguje velmi podobne, jako bys programoval s mutexy. >> >> >> >> _______________________________________________ >> >> Python mailing list >> >> pyt...@py.cz >> >> http://www.py.cz/mailman/listinfo/python >> >> >> >> Visit: http://www.py.cz > > _______________________________________________ > Python mailing list > python@py.cz > http://www.py.cz/mailman/listinfo/python > > Visit: http://www.py.cz _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz