queue.py 643 B

12345678910111213141516171819202122
  1. from flask import Blueprint
  2. from libs.tools import json_response, QueuePool
  3. from queue import Empty
  4. blueprint = Blueprint(__name__, __name__)
  5. @blueprint.route('/state/<string:token>', methods=['GET'])
  6. def state(token):
  7. q = QueuePool.get_queue(token)
  8. if q is None:
  9. return json_response(message='No such publish task')
  10. is_finished = q.finished
  11. try:
  12. message = q.get_nowait() if is_finished else q.get(timeout=10)
  13. except Empty:
  14. if is_finished:
  15. message = {'complete': True}
  16. QueuePool.remove_queue(token)
  17. else:
  18. message = {}
  19. return json_response(message)