Advertisement
Guest User

Untitled

a guest
Sep 18th, 2017
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.75 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #
  3. import eventlet
  4. eventlet.monkey_patch()
  5.  
  6. import logging
  7. from oslo_service import service
  8. import oslo_messaging as om
  9. from oslo_config import cfg
  10. import pdb
  11. import traceback
  12. import os
  13. import time
  14.  
  15. LOG = logging.getLogger()
  16. logging.basicConfig(level=logging.INFO,
  17. format='%(asctime)s %(thread)d %(message)s')
  18.  
  19.  
  20.  
  21. from threading import Lock, Event, current_thread, Thread
  22.  
  23.  
  24. class TaskServer3(service.Service):
  25. def __init__(self):
  26. super(TaskServer3, self).__init__()
  27. self._lock = Lock()
  28. self._stopped = Event()
  29. self._server = None
  30. LOG.info("TaskServer Created (%s) %s", os.getpid(), self)
  31.  
  32. def start(self):
  33. traceback.print_stack()
  34. LOG.info("TaskServer start() called (%s) [%s] %s", os.getpid(),
  35. current_thread(), self)
  36. super(TaskServer3, self).start()
  37. with self._lock:
  38. if self._server is not None:
  39. LOG.error("RPC Server already started!")
  40. return
  41.  
  42. self.target = om.Target(exchange="testX",
  43. topic="testT",
  44. server="testS")
  45. self._server = om.get_rpc_server(transport=om.get_rpc_transport(cfg.CONF),
  46. target=self.target,
  47. endpoints=[self],
  48. executor="eventlet")
  49. LOG.info("TaskServer calling RPC server start (%s) [%s] %s", os.getpid(),
  50. current_thread(), self)
  51. self._server.start()
  52. LOG.info("rpc server started (%s) [%s] %s", os.getpid(),
  53. current_thread(), self)
  54. LOG.info("TaskServer Start completed (%s) [%s] %s", os.getpid(),
  55. current_thread(), self)
  56.  
  57. def stop(self):
  58. LOG.info("TaskServer stop() called (%s) [%s] %s", os.getpid(),
  59. current_thread(), self)
  60. super(TaskServer3, self).stop()
  61. with self._lock:
  62. if self._server is None:
  63. LOG.error("stopping non-existing server")
  64. return
  65. LOG.info("TaskServer calling RPC server stop (%s) [%s] %s", os.getpid(),
  66. current_thread(), self)
  67. self._server.stop()
  68. LOG.info("TaskServer calling RPC server wait (%s) [%s] %s", os.getpid(),
  69. current_thread(), self)
  70. self._server.wait()
  71. LOG.info("rpc server destroyed (%s) [%s] %s", os.getpid(),
  72. current_thread(), self)
  73. self._server = None
  74. self._stopped.set()
  75. LOG.info("TaskServer Stopped (%s) [%s] %s", os.getpid(),
  76. current_thread(), self)
  77.  
  78. def reset(self):
  79. LOG.info("TaskServer reset() called (%s) %s", os.getpid(), self)
  80. pass
  81.  
  82. def wait(self):
  83. LOG.info("TaskServer wait called (%s) [%s] %s", os.getpid(),
  84. current_thread(), self)
  85. super(TaskServer3, self).wait()
  86. #traceback.print_stack()
  87. with self._lock:
  88. if self._server is None:
  89. LOG.error("Waiting for non-existing server")
  90. traceback.print_stack()
  91. return
  92. LOG.info("TaskServer calling RPC server wait (%s) [%s] %s", os.getpid(),
  93. current_thread(), self)
  94. self._server.wait()
  95. LOG.info("TaskServer call to RPC server wait done (%s) [%s] %s", os.getpid(),
  96. current_thread(), self)
  97. self._stopped.wait()
  98. LOG.info("TaskServer wait done (%s) [%s] %s", os.getpid(),
  99. current_thread(), self)
  100.  
  101. ### RPC CALLS ###
  102. def test(self, ctxt):
  103. LOG.info("RPC test call (%s)", os.getpid())
  104. return True
  105.  
  106.  
  107.  
  108. def main():
  109. cfg.CONF.transport_url="rabbit://127.0.0.1:5672"
  110.  
  111.  
  112. W = 2 # control the # of workers
  113.  
  114. # change to False to test option 2
  115. if True:
  116. LOG.info("Original sequence (%s)", os.getpid())
  117. LOG.info("Creating a launcher")
  118. service.launch( cfg.CONF,
  119. TaskServer3(),
  120. workers=W).wait()
  121. LOG.info("Main thread exiting")
  122. else:
  123. LOG.info("New sequence (%s)", os.getpid())
  124. LOG.info("Creating a TaskServer")
  125. ts = TaskServer3()
  126. LOG.info("Creating a launcher")
  127. ll = service.launch(cfg.CONF,
  128. ts,
  129. workers=W)
  130. LOG.info("Calling 'start'")
  131. ts.start()
  132. LOG.info("Calling 'launcher.wait'")
  133. ll.wait()
  134. LOG.info("Main thread exiting")
  135.  
  136. if __name__ == '__main__':
  137. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement