Cross Platform Locking: THe Easy Way

Jerome Chan eviltofu at rocketmail.com
Sun Oct 29 10:59:47 EST 2000


In article <mailman.972831527.7418.python-list at python.org>, Moshe Zadka 
<moshez at math.huji.ac.il> wrote:

> OK, here's an easy way to do crossplafrom locking:
> Run the following Python script, and then
> 
> 1) To lock, use urllib to grab the "/lock" url
> 2) To unlick , use urllib to grab the "/unlock" url
> 
> You need to get this to run on system startup.
> On UNIX, put it in rc.d.
> On NT, do whatever it is NT guys do <wink>
> 
> #Released to the public domain by Moshe zadka
> import BaseHTTPServer
> 
> locked = 0
> 
> class LockHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
> 
>     def do_GET(self):
>         if self.path=="/lock":
>             return self.lock()
>         if self.path=="/unlock":
>             return self.unlock()
> 	self.send_error(404, "Only locking")
> 
>     def lock(self):
>         global locked
>         if locked:
>             self.send_error(403, "Already locked")
>         else:
>             locked = 1
>             self.send_response(202)
>             self.end_headers()
> 
>     def unlock(self):
>         global locked
>         if not locked:
>             self.send_error(403, "Not locked")
>         else:
>             locked = 0
>             self.send_response(202)
>             self.end_headers()
> 
> def test(HandlerClass = LockHTTPRequestHandler,
>          ServerClass = BaseHTTPServer.HTTPServer):
>     BaseHTTPServer.test(HandlerClass, ServerClass)
> 
> 
> if __name__ == '__main__':
>     test()
> 
> --
> Moshe Zadka <moshez at math.huji.ac.il> -- 95855124
> http://advogato.org/person/moshez
> 
> 

What if I want to lock and unlock on different files? Or different 
sections of a file?



More information about the Python-list mailing list