Tôi hơi bối rối về cách làm điều gì đó mà tôi nghĩ sẽ khá đơn giản. Tôi có một ứng dụng đơn giản được viết bằng cách sử dụng Flask
. Nó trông giống như sau:Cách tiếp cận phù hợp để gọi các chức năng sau khi chạy ứng dụng bình là gì?
from flask import Flask
app = Flask(__name__)
def _run_on_start(a_string):
print "doing something important with %s" % a_string
@app.route('/')
def root():
return 'hello world'
if __name__ == "__main__":
if len(sys.argv) < 2:
raise Exception("Must provide domain for application execution.")
else:
DOM = sys.argv[1]
_run_on_start("%s" % DOM)
app.run(debug=True)
Những gì tôi đang tìm kiếm là thiết bị đầu cuối của tôi là xuất ra các báo cáo in trong _run_on_start
nhưng không của mã debug ứng dụng Flask thông thường khác. Nếu tôi xóa cuộc gọi trước khi app.run, đầu ra là bình thường. Hơn nữa tôi đang tìm đầu ra của _run_on_start
để được lặp lại hai lần khi khởi động, mặc dù tôi không biết nếu đó là một số đầu ra lạ hoặc chức năng thực sự được gọi là hai lần.
Tôi giả định đây không phải là cách đúng để thêm cuộc gọi chức năng trước khi bạn gọi app.run
. Tôi nhìn vào các tài liệu Flask và tìm thấy đề cập của trang trí khác nhau người ta có thể sử dụng, cho phép bạn thực hiện một chức năng trước/sau khi yêu cầu nhất định nhưng tôi muốn thực hiện cuộc gọi khi máy chủ ứng dụng được chạy.
Hơn nữa, tôi nhận ra rằng nếu tôi gọi mô-đun này từ một mô-đun khác, nghĩa là không phải khi __name__ != "__main__"
thì tôi sẽ không nhận được cuộc gọi của tôi tới _run_on_start
.
Cách tiếp cận phù hợp ở đây là gì? Trong cả hai trường hợp khi tôi bắt đầu từ CL và từ một mô-đun khác?
Điều này có lẽ sẽ trả lời câu hỏi: http://stackoverflow.com/questions/27465533/run-code-after-flask-application- noredirect = 1 & lq = 1 –