[python] Lock

Petr Messner petr.messner na gmail.com
Úterý Únor 10 14:39:07 CET 2015


Jak jsou jednotlivé zprávy od sebe odděleny? Vidím tam v klientovi


    def communicate(self, data):
        self._socket.send('%s %s' % (self.name, data))
        self._socket.recv(self.buffer_size)


A server to čte takto:

        while True:
            data = self._socket.recv(self.buffer_size)

            if data in ('', '\n', '\r\n'):
                return

            try:
                who, op, name = data.split()
            except ValueError:
                raise ValueError('Invalid data')


Co když se zprávy pošlou náhodou tak, že
self._socket.recv(self.buffer_size) přijme
dvě zprávy najednou? To mu pak přijde něco jako "client1 mklock
lock1client2 mklock lock2" a nebude to fungovat - server spadne.

PM


Dne 10. února 2015 14:15 Pavel S <pavel na schon.cz> napsal(a):

> Jeste existuje tzv. DLM (Distributed Lock Manager). Zjednodusene receno,
> je to mutex, ktery je pristupny po siti.
>
> Jeden takovy jednoduchy distributed lock manager jsem napsal v pythonu a
> umistil na activestate zde:
> http://code.activestate.com/recipes/578194-distributed-lock-manager-for-python/
> _______________________________________________
> Python mailing list
> python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20150210/a0a7270f/attachment.html>


Další informace o konferenci Python