<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hello, Phillip!<br>
<br>
I use binding.Obtain() on "peak.running.interfaces.IMainLoop", which
seem to be instantiating as "peak.running.scheduler.MainLoop" and
the "peak.events.interfaces.IEventLoop" is bound to
"peak.events.twisted_support.EventLoop". Did not go that far, looked
at the PEAK default event loop and couldn't figure out what's wrong
(without investgating links in the project's .ini file).<br>
<br>
Does that mean I cannot use stopOnSignals with the Twisted event
loop? Do I have to implement that method? I believe, it's used
because Twisted handles TCP communications for us.<br>
<br>
<br>
Best regards,<br>
Alexey Smishlayev
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<br>
<br>
<br>
<div class="moz-cite-prefix">On 30/09/15 00:27, PJ Eby wrote:<br>
</div>
<blockquote
cite="mid:CALeMXf4_gS0H3fObL8+W=uByoVUCTmO9yDvd2nHRvhRXKX8UjQ@mail.gmail.com"
type="cite">
<pre wrap="">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 <a class="moz-txt-link-rfc2396E" href="mailto:alexey@xtech2.lv"><alexey@xtech2.lv></a> wrote:
</pre>
<blockquote type="cite">
<pre wrap="">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
</pre>
<blockquote type="cite">
<pre wrap="">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:
</pre>
</blockquote>
<pre wrap="">
in the log file. In CommandBase.py attribute self.mainloop is defined as
</pre>
<blockquote type="cite">
<pre wrap="">from peak.api import binding
from peak.running import commands, interfaces
class CommandBase(commands.EventDriven):
mainLoop = binding.Obtain(interfaces.IMainLoop)
...
</pre>
</blockquote>
<pre wrap="">
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',)")
</pre>
<blockquote type="cite">
<pre wrap="">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')
</pre>
</blockquote>
<pre wrap="">
How do I do everything correctly?
Best regards,
Alexey Smishlayev
_______________________________________________
PEAK mailing list
<a class="moz-txt-link-abbreviated" href="mailto:PEAK@eby-sarna.com">PEAK@eby-sarna.com</a>
<a class="moz-txt-link-freetext" href="http://www.eby-sarna.com/mailman/listinfo/peak">http://www.eby-sarna.com/mailman/listinfo/peak</a>
</pre>
</blockquote>
<pre wrap="">
</pre>
</blockquote>
<br>
</body>
</html>