thắc mắc Lỗi gửi stream từ Python qua trang html

sforyou

Junior Member
Em đang tìm hiểu Python, các bác giúp em lỗi này với ạ.
Em muốn truyền qua SSE mỗi từ của câu message, mỗi từ cách nhau 1s.
Nhưng khi chạy, em thấy các data bị chờ nhau, phải sau đúng 5s mới thấy các data hiển thị 1 phát duy nhất.
data: Tôi
data: đang
data: tìm
data: hiểu
data: Python
Đáng lẽ phải hiển thị lần lượt cách nhau 1s mới đúng ý em. Không biết lỗi chỗ nào ạ. Em cảm ơn!

app.py như sau:

Python:
from flask import Flask, request, Response
import time
app = Flask(__name__, template_folder='')

def event_stream(texts):
    for word in texts:
        time.sleep(1)
        yield "data: {}\n\n".format(word + " ")
    yield "data: {}\n\n".format("endresponse")

@app.route("/stream", methods=['GET'])
def stream_route():
    message = "Tôi đang tìm hiểu Python"
    words = message.split()
            
    return response(event_stream(words), mimetype='text/event-stream')

if __name__ == "__main__":
    app.run()


Trang html: em tạo
EventSource với onmessage để lấy phản hồi từ nguồn stream:

JavaScript:
var source = new EventSource("/python_app/stream"); Nơi chứa app.py
          source.onmessage = function(event) {
            var data = JSON.parse(event.data);
            $("#output").append(event.data);
          };
 
Đầu tiên thì bạn nên check xem lỗi do bên nào, mở browser lên rồi check response trực tiếp từ api của thằng Flask trước xem có hiển thị đúng không. Nếu đúng rồi thì check tiếp thằng js. Có thể 1 trong 2 thằng nó cache lại rồi mới gửi/nhận/hiển thị.
 
Đầu tiên thì bạn nên check xem lỗi do bên nào, mở browser lên rồi check response trực tiếp từ api của thằng Flask trước xem có hiển thị đúng không. Nếu đúng rồi thì check tiếp thằng js. Có thể 1 trong 2 thằng nó cache lại rồi mới gửi/nhận/hiển thị.
Mình thử với câu 2000 từ thì thấy nó hiển thị ~500 từ 1 lần, tổng 4 lần bác ạ. Nếu 1 trong 2 cái bị cache thì cách khắc phục sao bác à?
 
thêm cái header "Cache-Control: no-store" vào response
https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
code php nó có no-store cache nè
4RJD3gO.png
 
em chạy trên PC thì được, nhưng up lên hosting thì chạy không được. Chắc cho shared host có vấn đề
Share hosting làm gì có python cho bạn? Hầu hết share hosting chỉ hỗ trợ PHP thôi. Các mã nguồn python, Ruby, NodeJS,... thậm chí Laravel (PHP) đều nên chạy trên máy chủ riêng hết á.
 
Last edited:
Back
Top