If a select-based (or, presumably, poll-based) server wants to use signals for anything other than shutdown (e.g. closing and reopening log files, rereading configs, etc.), then, on some platforms, a select call can fail with an "interrupted system call" (EINTR) error that should be ignored. The asyncore main loop should check for this error in it's select call and the select module should make this error easier to check for. In Python 1.5.2, the medusa select call can be changed from r,w,e = select.select (r,w,e, timeout) to: while 1: try: r,w,e = select.select (r,w,e, timeout) except select.error, v: if v[0] != EINTR: raise else: break I presume that this works in Python 1.6/2.0, but I haven't tried it yet? This depends on the structure of select.error values and requires that we get EINTR from somewhere. (What should the value be on NT?) I wonder if there should be an InterruptedSystemCall exception somewhere that select raises in this case? At a minimum, code like the above should be added to asyncore. Thoughts? Jim -- Jim Fulton mailto:jim@digicool.com Technical Director (888) 344-4332 Python Powered! Digital Creations http://www.digicool.com http://www.python.org Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4