[PEAK] Stopping PEAK application on SIGINT
Alexey Smishlayev
alexey at xtech2.lv
Tue Sep 29 08:06:03 EDT 2015
Good day everyone!
I would like my PEAK application to stop on ^C or SIGINT. Currently, in
that case I get an output something like
> 29.09.2015 14:56:48.179 [DEBUG] Connect.twisted Unexpected error in
main loop.
> 29.09.2015 14:56:48.190 [ERROR] Connect.twisted Traceback (most
recent call last):
> 29.09.2015 14:56:48.190 [ERROR] File
"/Users/alexey/xtech2/tester/build/lib/ank/BBS/CommandBase.py", line 38,
in run
> 29.09.2015 14:56:48.190 [ERROR] self.mainLoop.run()
> 29.09.2015 14:56:48.190 [ERROR] File
"/Library/Python/2.7/site-packages/peak/running/scheduler.py", line 78,
in run
> 29.09.2015 14:56:48.190 [ERROR] return
self.eventLoop.runUntil(self.exitCode,True,idle=self.sleep)[0]
> 29.09.2015 14:56:48.190 [ERROR] File
"/Library/Python/2.7/site-packages/peak/events/twisted_support.py", line
186, in runUntil
> 29.09.2015 14:56:48.190 [ERROR] self.reactor.run(False)
> 29.09.2015 14:56:48.190 [ERROR] File
"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/base.py",
line 1192, in run
> 29.09.2015 14:56:48.190 [ERROR] self.mainLoop()
> 29.09.2015 14:56:48.190 [ERROR] --- <exception caught here> ---
> 29.09.2015 14:56:48.190 [ERROR] File
"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/base.py",
line 1204, in mainLoop
> 29.09.2015 14:56:48.190 [ERROR] self.doIteration(t)
> 29.09.2015 14:56:48.190 [ERROR] File
"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/selectreactor.py",
line 105, in doSelect
> 29.09.2015 14:56:48.190 [ERROR] [], timeout)
> 29.09.2015 14:56:48.190 [ERROR] exceptions.KeyboardInterrupt:
in the log file. In CommandBase.py attribute self.mainloop is defined as
> from peak.api import binding
> from peak.running import commands, interfaces
> class CommandBase(commands.EventDriven):
> mainLoop = binding.Obtain(interfaces.IMainLoop)
> ...
If I set "peak.running.mainLoop.stopOnSignals" in my project's .ini file
to anything else except empty tuple, on the application's startup I get
the following error (I tried "stopOnSignals = ('SIGINT',)")
> Traceback (most recent call last):
> File "../ank/BBS/Assembler.py", line 370, in run
> _exitCode = _root.run()
> File "/Library/Python/2.7/site-packages/peak/running/commands.py",
line 229, in run
> return self._run() or 0
> File "/Library/Python/2.7/site-packages/peak/running/commands.py",
line 509, in _run
> return self.invoke()
> File
"/Users/alexey/xtech2/tester/build/lib/ank/BBS/CommandBase.py", line 38,
in run
> self.mainLoop.run()
> File "/Library/Python/2.7/site-packages/peak/running/scheduler.py",
line 66, in run
> handler = self.eventLoop.signals(*self.stopOnSignals)
> File "_once.pyx", line 112, in _once.BaseDescriptor.__get__
> File "_once.pyx", line 100, in _once.__get__
> File
"/Library/Python/2.7/site-packages/peak/binding/components.py", line
682, in delegate
> return getattr(getattr(s,delegateAttr),a)
> File "_once.pyx", line 112, in _once.BaseDescriptor.__get__
> File "_once.pyx", line 100, in _once.__get__
> File
"/Library/Python/2.7/site-packages/peak/binding/components.py", line
682, in delegate
> return getattr(getattr(s,delegateAttr),a)
> File "_once.pyx", line 88, in _once.BaseDescriptor.__get__
> AttributeError: ('Recursive attempt to compute attribute', 'signals')
How do I do everything correctly?
Best regards,
Alexey Smishlayev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.eby-sarna.com/pipermail/peak/attachments/20150929/289861c8/attachment.html
More information about the PEAK
mailing list