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

Odpovedet emailem