On 18 Nov 2009, at 19:45, ken manheimer wrote:

> hi.  a while back i posted about an appscript CommandError timeout i 
> encounter at high command interaction counts.  not surprisingly, the problem 
> (i'll reiterate the details below) still happens in 0.20.2.  i'm wondering if 
> you (or any of the other appscript developers) have any thoughts about this?  
> it might be an apple events problem (eg, http://db.tidbits.com/article/10643, 
> except i was seeing the problem in 10.5 leopard and not just snow leopard), 
> or a problem with my machine, but the 2^16 limit happens always, and 
> sometimes the machine gets in a state where it happens much sooner.

Testing on 10.5.8 here doesn't throw up any errors. Have you tried it with a 
different application? Have you tried it with AppleScript?


> here are the details:
> 
> the behavior is an appscript.reference.CommandError timeout after some number 
> of appscript transactions.  there seems to be a hard limit just before 2**16 
> (65536) commands (actually, at 65529 commands, 

The auto-incrementing return ID is global to the system, so if other apps send 
events, that will also increment the counter. And since the counter is probably 
non-zero on your first run, you'll need to run your script several times, 
ignoring the result from the first run as that will almost certainly be 
artificially low.


> while i'm curious about the reason for the high hard limit, the reduced 
> limits are actually a problem - even the 57000/58000 ceiling interferes with 
> my script operation when running against a lot of playlists and tracks 
> (88/9300), to the point that i've had to include kludgy measures to work 
> around the problem.

I'd recommend reading the optimisation chapter of the appscript manual - many 
commands can operate on multiple objects at once, which will reduce the number 
of events sent and generally speed things up. That won't solve the problem - 
the 10.6 timeout bug is an Apple problem (which they've still not fixed in 
10.6.2; I suggest folks file lots of radar reports on this issue to make Apple 
aware that it's a serious problem). 

The only other thing I can suggest is to monkey-patch the 
aem.Application._createproc function (or possibly even code a permanent 
workaround into ae.c itself) so that any time the Apple Event Manager's 
AECreateAppleEvent function returns a new event with the known-to-be-bad return 
ID, it chucks it and asks for a fresh one. I really don't have time to work on 
this right now, but if anyone else wants to have a go and submit a patch they'd 
be welcome to.

HTH

has
-- 
Control AppleScriptable applications from Python, Ruby and ObjC:
http://appscript.sourceforge.net

_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig

Reply via email to