asterisk_misc_common.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import asyncio
  2. import logging
  3. from panoramisk import Manager
  4. LOOP = asyncio.get_event_loop()
  5. def add_arguments(p):
  6. p.add_argument(
  7. "--log-level",
  8. default="INFO",
  9. choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
  10. )
  11. return p
  12. def do_common_options(args):
  13. logging.basicConfig(level=logging.DEBUG)
  14. logging.getLogger("panoramisk.manager").setLevel(logging.WARNING)
  15. def get_manager(args):
  16. manager = Manager(
  17. loop=LOOP,
  18. host="127.0.0.1",
  19. port=5038,
  20. ssl=False,
  21. encoding="utf8",
  22. username="ring",
  23. secret="campanellino",
  24. ping_delay=10, # Delay after start
  25. ping_interval=10, # Periodically ping AMI (dead or alive)
  26. reconnect_timeout=2, # Timeout reconnect if connection lost
  27. )
  28. return manager
  29. def run_manager(manager, args, on_startup=None, on_shutdown=None):
  30. manager.connect()
  31. try:
  32. if on_startup:
  33. manager.loop.run_until_complete(on_startup(manager))
  34. manager.loop.run_forever()
  35. except KeyboardInterrupt:
  36. if on_shutdown:
  37. manager.loop.run_until_complete(on_shutdown(manager))
  38. manager.loop.close()