<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">&lt;alexey@xtech2.lv&gt;</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] --- &lt;exception caught here&gt; ---
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>