Mục tiêu của tôi là lấy mã tùy ý để chạy sau khi ứng dụng bình của tôi được bắt đầu, đây là vấn đề của tôi. Tôi đã có này (nơi ứng dụng là ứng dụng bình của tôi):Mã chạy sau khi ứng dụng bình đã bắt đầu
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
Tôi tưởng tôi sẽ chỉ làm điều này
def run():
from webapp import app
app.run(debug=True, use_reloader=False)
some_code()
nhưng mã không tiếp tục app.run qua() cho đến khi thoát máy chủ, vì vậy some_code() không bao giờ chạy
các giải pháp tôi đang làm việc trên vào lúc này là chạy some_code() trong một thread riêng biệt từ app.run(), tạo một hàm before first request mà bộ này:
app.is_running = True
Sau đó nhận some_code() để quay một yêu cầu cơ bản đến ứng dụng để mã 'trước khi yêu cầu đầu tiên' chạy. Điều này khá phức tạp và sẽ khó viết tài liệu cho ... Tôi muốn tham khảo một tham số app.is_running đã được viết vào bình, hoặc sử dụng một @ app.after_server_start decorator, nhưng với kiến thức của tôi không phải của những người tồn tại:/
Giúp tôi làm cho mã này tốt hơn?
bài mùn: everytime tôi suy nghĩ về câu hỏi này, nó làm cho tôi muốn cho một @app.after_server_start decorator
Tại sao không chỉ sử dụng '@ app.before_first_request' và * được thực hiện với điều đó *. Tại sao mã cần chạy trước đó? –
Nói cách khác, tại sao nó quan trọng đến mức mã chạy * sau * khởi động máy chủ (mà bạn không thể sử dụng như thế trong mã sản xuất, luôn sử dụng một thùng chứa WSGI thích hợp thay vì không phải là sự mỏng manh cho phát triển- chỉ máy chủ Werkzeug mới bắt đầu bằng 'app.run()') nhưng trước khi một yêu cầu đến? –
Chủ yếu là vì nó có ý nghĩa hơn để chạy mã sau khi máy chủ bắt đầu, nhưng quyền của bạn không thực sự cần chạy sớm hơn – Cyrin