Interrupting a running task with Ctrl+C results in this traceback:
^CTraceback (most recent call last):
File "/Users/peter/Envs/are/bin/inv", line 9, in <module>
load_entry_point('invoke==0.8.2', 'console_scripts', 'inv')()
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/cli.py", line 295, in main
dispatch(sys.argv)
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/cli.py", line 288, in dispatch
return executor.execute(*tasks, dedupe=dedupe)
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/executor.py", line 89, in execute
task=task, name=name, args=args, kwargs=kwargs
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/executor.py", line 128, in _execute
return task(*args, **kwargs)
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/tasks.py", line 108, in __call__
result = self.body(*args, **kwargs)
File "/Users/peter/Code/are-platform/API/tasks.py", line 56, in start
run_env('python are/servers/dev_server.py', shell_env, verbose)
File "/Users/peter/Code/are-platform/API/tasks.py", line 27, in run_env
run('%s %s' % (env_vars, cmd))
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/runner.py", line 143, in run
stdout, stderr, exited, exception = func(command, warn, hide)
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/runner.py", line 65, in run
stdout, stderr = process.communicate()
File "/usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 798, in communicate
return self._communicate(input)
File "/Users/peter/Envs/are/lib/python2.7/site-packages/invoke/monkey.py", line 58, in _communicate
rlist, wlist, xlist = select.select(read_set, write_set, [])
KeyboardInterrupt
I'm migrating from Fabric which handles SIGINT nicely by exiting with sys.exit(1)
and printing Stopped.
. It also properly forwards the interrupt to any processes started with fabric.api.local()
. How can I get this behaviour in Invoke?
Willing to contribute a fix for this if I'm pointed in the right direction!
run() Feature