[Pythonmac-SIG] appscript fails to notice System Events is not running
Adam Morris
amorris at mistermorris.com
Sun Mar 28 16:12:26 CEST 2010
I use a function whose sole purpose is to return a reference to System
Events to avoid this problem:
import appscript as ap
def getSystemEvents():
try:
# ask System Events for processes to see if it's there
throwaway = ap.app('/System Events').processes() # would
calling run() be better?
result = ap.app('/System Events')
except:
# open up, Mr System Events
ap.app('/Finder').startup_disk.items[':System:Library:CoreServices:System
Events'].open()
result = ap.app('/System Events')
On Sat, Mar 27, 2010 at 1:35 PM, Noah Coccaro <noah at coccaro.com> wrote:
> I have a long running server that uses appscript to send keystroke commands
> to System Events.
> It seems that System Events does not run constantly, or frequently dies.
> Quite often, appscript seems to be in a state where it incorrectly thinks
> System Events is running, and still sends commands to it, resulting in
> failures.
>
> Is there a workaround for this? A way to tell appscript that an app
> definitly is not running, or clear some cache maybe that is lingering? I
> notice if I start a different python instance, and send commands to System
> Events, it correctly starts it up.
>
> Here is a error dump from running essentially app('System Events').run()
> when it thought it was already running -- the same happens with launch, or
> any other command -- appscript can't get the terminology for System Events
> because it isn't running:
>
> File "./avjamasserver.py", line 102, in do_POST
> result = self.CallFunction(request, av.activity)
> File "./avjamasserver.py", line 74, in CallFunction
> return function(*function_args)
> File "/Users/noah/Software/RS232/avcontrol.py", line 300, in AudioMode
> SafeStart(sys_events)
> File "/Users/noah/Software/RS232/avcontrol.py", line 20, in SafeStart
> app_instance.run()
> File "build/bdist.macosx-10.5-i386/egg/appscript/reference.py", line 578,
> in __getattr__
> selectortype, code = self.AS_appdata.referencebyname()[name]
> File "build/bdist.macosx-10.5-i386/egg/appscript/reference.py", line 260,
> in referencebyname
> self.connect()
> File "build/bdist.macosx-10.5-i386/egg/appscript/reference.py", line 229,
> in connect
> self._terms = terminology.tablesforapp(t)
> File "build/bdist.macosx-10.5-i386/egg/appscript/terminology.py", line
> 171, in tablesforapp
> _terminologycache[aemapp.AEM_identity] =
> tablesforaetes(aetesforapp(aemapp))
> File "build/bdist.macosx-10.5-i386/egg/appscript/terminology.py", line
> 143, in aetesforapp
> raise RuntimeError("Can't get terminology for application (%r): %s" %
> (aemapp, e))
> RuntimeError: Can't get terminology for application
> (aem.Application(u'/System/Library/CoreServices/System Events.app')):
> Command failed: Application isn't runnin
> g. (-600)
>
>
>
> _______________________________________________
> Pythonmac-SIG maillist - Pythonmac-SIG at python.org
> http://mail.python.org/mailman/listinfo/pythonmac-sig
> unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythonmac-sig/attachments/20100328/02dc91ae/attachment.html>
More information about the Pythonmac-SIG
mailing list