Re: [Pyobjc-dev] Cocoa, httplib and threads?
Brought to you by:
ronaldoussoren
From: Jonathan S. <sa...@gm...> - 2011-07-15 13:13:54
|
You might also consider adding a run loop to each thread you fork. I'm not sure how things are handled by pyobjc (eg if it manages run loops in threads for you, I would tend to doubt it), but many networking API in Cocoa require a run loop or Bad Things Happen (TM), where "Bad Things" are usually silent failures or stuck threads. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html Speaking of Cocoa. I don't know if you're doing anything that really requires threaded programming or python networking. If not, consider using the asynchronous Cocoa networking APIs. They'll keep you out of threaded programming land. Look at NSHttp* and NSURL* classes. YMMV, etc. Cheers, Jonathan Saggau <http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html> On Fri, Jul 15, 2011 at 4:42 AM, Ronald Oussoren <ron...@ma...>wrote: > > On 15 Jul, 2011, at 3:43, Greg Ewing wrote: > > > I'm trying to use httplib to send an http request in > > a background thread. It works fine on its own, but when > > I do it inside a Cocoa application, the thread hangs > > as soon as it tries to send the request. > > > > It doesn't seem to be a GIL problem, because I can do > > other things in the thread leading up to that point. > > It's just sending the request that seems to block. > > > > Is there anything I should be aware of when using > > the threading module in conjunction with pyobjc? > > This should work. One thing you could try is redefining urllib. > proxy_bypass_macosx_sysconf and urllib.getproxies_macosx_sysconf > > def getproxies_macosx_sysconf(): > return {} > > def proxy_bypass_macosx_sysconf(host): > return True > > urllib. getproxies_macosx_sysconf = getproxies_macosx_sysconf > urllib.proxy_bypass_macosx_sysconf = proxy_bypass_macosx_sysconf > > This ensures that urllib doesn't use the OSX specific code for getting the > HTTP proxy configuration. That code should work just fine in a Cocoa > program, but it does call into Apple's frameworks and hence might cause > problems in some way. > > Ronald > > -- > > Greg > > > > > ------------------------------------------------------------------------------ > > AppSumo Presents a FREE Video for the SourceForge Community by Eric > > Ries, the creator of the Lean Startup Methodology on "Lean Startup > > Secrets Revealed." This video shows you how to validate your ideas, > > optimize your ideas and identify your business strategy. > > http://p.sf.net/sfu/appsumosfdev2dev > > _______________________________________________ > > Pyobjc-dev mailing list > > Pyo...@li... > > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > > > > ------------------------------------------------------------------------------ > AppSumo Presents a FREE Video for the SourceForge Community by Eric > Ries, the creator of the Lean Startup Methodology on "Lean Startup > Secrets Revealed." This video shows you how to validate your ideas, > optimize your ideas and identify your business strategy. > http://p.sf.net/sfu/appsumosfdev2dev > _______________________________________________ > Pyobjc-dev mailing list > Pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyobjc-dev > > -- Jonathan Saggau jonathansaggau.com This amusement engaged me so much that [friends] were obliged to force me from it; and thus it is with every inclination I give into, it continues to augment, till at length it becomes so powerful, that I lose sight of everything except the favorite amusement. - Rousseau |