Tôi có trường hợp sử dụng sau cho máy chủ của tôi Tornado web:Làm thế nào để chia sẻ dữ liệu giữa các yêu cầu trong Tornado Web
Khi POST yêu cầu mục có thể được thực hiện cho các máy chủ, các mục mà sẽ không được tiếp tục tồn vào một tập tin hoặc cơ sở dữ liệu . Khi GET yêu cầu một quá trình có thể được bắt đầu hoặc chấm dứt.
Do đó, tôi cần chia sẻ dữ liệu giữa các yêu cầu khác nhau trong triển khai RequestHandler
của mình. Cách bình thường để làm như vậy là gì?
Tôi gặp khó khăn khi lưu dữ liệu vào self
, ví dụ: self.entry = "..."
. Trong một yêu cầu khác, dữ liệu không còn hiện diện nữa.
Giải pháp duy nhất làm việc tôi đã tìm thấy là để lưu trữ trong đối tượng áp dụng:
application = web.Application([
(r'.*', MainHandler,
])
và
def get(self):
# ...
self.application.entry = "..."
Đó có phải là cách thích hợp? Ngoài ra những gì về đồng bộ hóa ở đây, tôi có nghĩa là điều này có nghĩa là truy cập vào dữ liệu được chia sẻ.
Tôi không quen với Tornado, nhưng hãy nhớ rằng điều này có thể sẽ không hoạt động nếu bạn sử dụng nhiều quá trình. – monkut
@monkut Có nhiều quy trình cho máy chủ, máy khách, máy khách? –
Tornado là một máy chủ đơn luồng, đơn luồng ... điều này sẽ hoạt động. – oDDsKooL