Tôi hiện đang có một máy chủ web Flask để lấy dữ liệu từ một API JSON bằng cách sử dụng đối tượng yêu cầu được tích hợp sẵn.Có thể tự động cập nhật mẫu được hiển thị trong Flask, phía máy chủ không?
Ví dụ:
def get_data():
response = requests.get("http://myhost/jsonapi")
...
return response
@main.route("/", methods=["GET"])
def index():
return render_template("index.html", response=response)
Vấn đề ở đây là một cách tự nhiên các phương thức GET chỉ chạy một lần, các get_data lần đầu tiên được gọi. Để làm mới dữ liệu, tôi phải dừng và khởi động lại máy chủ Flask wsgi. Tôi đã cố gắng gói các phần khác nhau của mã trong một vòng lặp True/sleep trong khi điều này ngăn không cho người dùng tải trang.
Cách Pythonic nào nhất để tự động nhận dữ liệu tôi muốn mà không phải tải lại trang hoặc khởi động lại máy chủ?
Nếu bạn sẵn sàng định tuyến phương thức 'get_data()' cho URL, bạn chỉ có thể sử dụng [AJAX] (http://api.jquery.com/jquery.ajax/) để gọi từ khách hàng và cập nhật trang với kết quả. – Celeo
@Celeo là một cách. Nhưng nói rằng tôi có 'get_data()' trong một tập tin riêng biệt và tôi không muốn thêm một tuyến đường khác? Câu hỏi của tôi liên quan đến việc liệu điều này có thể được thực hiện bằng cách sử dụng Flask hay một phần mở rộng Flask. – damienstanton
Bạn sẽ phải có một số cách để máy khách nhận dữ liệu từ máy chủ sau khi máy chủ đã hoàn thành mẫu. Nếu bạn chỉ muốn dữ liệu cập nhật trong nền mà không cần tương tác với khách hàng, bạn có thể thử [Celery] (http://www.celeryproject.org/). – Celeo