[PEAK] Stopping PEAK application on SIGINT

PJ Eby pje at telecommunity.com
Tue Sep 29 17:27:27 EDT 2015


Which event loop are you using?  Twisted, the PEAK default, or
something else?  The issue here appears to be that the eventLoop
property of the MainLoop instance lacks a `signals()` method -- which
would seem to mean it doesn't fully implement IEventLoop or is the
wrong type of object to start with.

On Tue, Sep 29, 2015 at 8:06 AM, Alexey Smishlayev <alexey at xtech2.lv> wrote:
> 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
>
> _______________________________________________
> PEAK mailing list
> PEAK at eby-sarna.com
> http://www.eby-sarna.com/mailman/listinfo/peak


More information about the PEAK mailing list