/library/G.py

https://github.com/xiaowan/pyadmin · Python · 56 lines · 43 code · 11 blank · 2 comment · 3 complexity · c3a58cf65bc00753b6b1836331bbe510 MD5 · raw file

  1. from sqlalchemy.orm import scoped_session
  2. from mapper.init import UnitymobSession
  3. from conf import conf
  4. from library.MyRedis import MyRedis
  5. from library.MyRabbitmq import MyRabbitmq
  6. from library.RPCClient import RPCClient
  7. from library.Utils import Utils
  8. from tornado.ioloop import IOLoop
  9. class G(object):
  10. _instance = None
  11. @classmethod
  12. def getInstance(cls):
  13. if cls._instance is None:
  14. cls._instance = cls()
  15. return cls._instance
  16. def __init__(self):
  17. self.conf = conf
  18. self.utils = Utils
  19. self._session = None
  20. @property
  21. def currentIOloopInstance(self):
  22. return IOLoop.current()
  23. @property
  24. def session(self):
  25. if self._session is None:
  26. self._session = scoped_session(UnitymobSession)
  27. return self._session
  28. @property
  29. def redis(self):
  30. return MyRedis.getInstance(host=conf.redis.host, port=conf.redis.port, password=conf.redis.password,
  31. decode_responses=False)
  32. @property
  33. def rabbitmq(self):
  34. """ 自定义rabbitmq """
  35. return MyRabbitmq.getInstance(conf.rabbitmq.dsn)
  36. @property
  37. def rpc(self):
  38. fb = conf.facebook
  39. return RPCClient(fb.app_id, fb.app_secret, fb.rpc_endpoint)
  40. def clear(self):
  41. """ 释放资源 """
  42. if self._session is not None:
  43. self._session.remove()
  44. self._session = None
  45. del self.rabbitmq.channel