2 changed files with 37 additions and 13 deletions
@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*- |
||||
|
||||
import asyncio |
||||
from functools import wraps |
||||
|
||||
import jmclient # install asyncioreactor |
||||
from twisted.internet import reactor |
||||
|
||||
from jmbase import jmprint |
||||
|
||||
|
||||
def wrap_main(func): |
||||
|
||||
@wraps(func) |
||||
async def func_wrapper(*args, **kwargs): |
||||
|
||||
try: |
||||
return await func(*args, **kwargs) |
||||
except SystemExit as e: |
||||
return e.args[0] if e.args else None |
||||
finally: |
||||
try: |
||||
for task in asyncio.all_tasks(): |
||||
task.cancel() |
||||
if reactor.running: |
||||
reactor.stop() |
||||
except Exception as e: |
||||
jmprint(f'Errors during reactor cleaenup/stop: {e}', 'debug') |
||||
|
||||
return func_wrapper |
||||
Loading…
Reference in new issue