2015-06-09 13 views
5

Tôi đang sử dụng Flask làm điểm cuối REST để thêm yêu cầu ứng dụng vào hàng đợi. Hàng đợi sau đó được tiêu thụ bởi một luồng thứ hai.Trình xử lý sự kiện tắt Flask bằng Python

server.py

def get_application(): 
    global app 
    app.debug = True 
    app.queue = client.Agent() 
    app.queue.start()                                                     
    return app 

@app.route("/api/v1/test/", methods=["POST"]) 
def test(): 
    if request.method == "POST": 
     try: 
      #add the request parameters to queue 
      app.queue.add_to_queue(req) 
     except Exception: 
      return "All the parameters must be provided" , 400 
    return "", 200 

    return "Resource not found",404 

client.py

class Agent(threading.Thread): 

     def __init__(self): 
      threading.Thread.__init__(self) 
      self.active = True 
      self.queue = Queue.Queue(0) 


     def run(self): 
      while self.active: 
       req = self.queue.get() 
       #do something 


     def add_to_queue(self,request): 
      self.queue.put(request) 

Có một xử lý sự kiện tắt máy trong bình để tôi có thể sạch shutdown thread tiêu dùng bất cứ khi nào ứng dụng bình là tắt máy (giống như khi dịch vụ apache là khởi động lại)?

Trả lời

8

Không có app.stop() nếu đó là những gì bạn đang tìm kiếm, tuy nhiên sử dụng mô-đun atexit bạn có thể làm điều gì đó tương tự:

https://docs.python.org/2/library/atexit.html

Hãy xem xét điều này:

import atexit 
#defining function to run on shutdown 
def close_running_threads(): 
    for thread in the_threads: 
     thread.join() 
    print "Threads complete, ready to finish" 
#Register the function to be called on exit 
atexit.register(close_running_threads) 
#start your process 
app.run() 

Cũng cần lưu ý rằng atexit sẽ không được gọi nếu bạn buộc máy chủ của mình ngừng sử dụng Ctrl-C.

Để có một mô-đun khác- signal.

https://docs.python.org/2/library/signal.html

+5

Tôi đang sử dụng tính năng này và hoạt động tốt. Cảm ơn. Nhân tiện, atexit xử lý Ctrl C đúng cách – arturvt

Các vấn đề liên quan