Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #9586
| References | <ivq6ej$vpp$2@speranza.aioe.org> <20110715223741.GA18822@cskk.homeip.net> |
|---|---|
| Date | 2011-07-16 10:01 +1000 |
| Subject | Re: Looking for general advice on complex program |
| From | Chris Angelico <rosuav@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.1093.1310774479.1164.python-list@python.org> (permalink) |
On Sat, Jul 16, 2011 at 8:37 AM, Cameron Simpson <cs@zip.com.au> wrote: > There are two approaches to this. > You can create a file while your umask is 0777... [or] > My personal habit is to make a directory for the lock Both viable options; I'd be inclined toward the second. Or, here's a third option. Instead of writing to a shared network drive, submit requests on a TCP socket direct to the monitor program. Spin off a thread that does this: * Wait for incoming socket connection * Set overall cutoff timer; if (say) 2 seconds pass, kill the connection * Authenticate the client (if applicable) * Accept the update data, sanitize if necessary * Write the file to disk * Notify the XManager * Loop. Do all this on *one thread* and then you eliminate all race conditions. Good use of a TCP listen queue and the cutoff timer will mean that applications aren't actually kept waiting, but they're still rigidly locked into a queue - depending on how frequent your updates are, this could be a problem. If you need simultaneous updates, spin off a new thread for each socket connection, and then use something simple like a mapping of file name to semaphore to ensure no two try to update the same file at once. By moving the actual file read/writes to a single computer, you simplify the task of notifying the parent. In fact, if there's only one process that needs to be made aware of the change, the job's even easier - all you need to do is change a variable or call a method or whatever it be, right there in the socket handler. Chris Angelico
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Looking for general advice on complex program Josh English <Joshua.R.English@gmail.com> - 2011-07-15 12:47 -0700
Re: Looking for general advice on complex program Billy Mays <81282ed9a88799d21e77957df2d84bd6514d9af6@myhashismyemail.com> - 2011-07-15 16:03 -0400
Re: Looking for general advice on complex program Cameron Simpson <cs@zip.com.au> - 2011-07-16 08:37 +1000
Re: Looking for general advice on complex program Chris Angelico <rosuav@gmail.com> - 2011-07-16 10:01 +1000
Re: Looking for general advice on complex program geremy condra <debatem1@gmail.com> - 2011-07-16 14:08 -0400
csiph-web