Hi there - Real simple question: Do I need to worry about threading when coding External Methods (in Zope 2)? If I do have something that is not safe (for example, I want to os.system nslookup to check MX records) do I have to explicitly protect it somehow? --Brian
Brian Hooper wrote:
Hi there -
Real simple question: Do I need to worry about threading when coding External Methods (in Zope 2)?
Certainly. Here are basic rules: - You don't have to worry about state of persistent objects (e.g. self). Persistent objects are inherently thread safe, since each thread has it's own copy. - You don't have to worry about state of immutable objects, as they can't be modified by multiple threads. - You do need to worry about global variables (e.g. module variables and shared instance variables defined in class statements) and mutable default arguments to functions and methods.
If I do have something that is not safe (for example, I want to os.system nslookup to check MX records)
Hm. Why is this not safe? This is definately pretty heavy.
do I have to explicitly protect it somehow?
Yes. This can be done with a simple lock object, or one of the various modules distributed with Python. Jim -- Jim Fulton mailto:jim@digicool.com Python Powered! Technical Director (888) 344-4332 http://www.python.org Digital Creations http://www.digicool.com http://www.zope.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.
participants (2)
-
Brian Hooper -
Jim Fulton