Tôi đang lưu trữ một từ điển trong một phiên Django có thể truy cập bởi nhiều chủ đề. Tất cả các chủ đề có thể cập nhật từ điển, chủ đề cũng nhận được các giá trị từ điển để chạy quá trình. Tôi muốn biết phiên Django là thread an toàn hoặc tôi phải sử dụng khóa hoặc semaphores?Chủ đề phiên Django có an toàn không?
điển hình ví dụ:
Thread1:
threadDict = request.session.get('threadDict', None)
if threadDict['stop']:
#break the for loop exit the thread
else:
#do some processing and update some values in thread dictionary
threadDict['abc'] = 0
request.session['threadDict'] = threadDict (Point1)
def someFunction():
#this function is used to send stop signal to thread
threadDict = request.session.get('threadDict', None)
threadDict['stop'] = True
request.session['threadDict'] = threadDict (Point2)
Liệu có một cơ hội mà khi Point2
cập nhật từ điển chủ đề trong phiên ngay sau khi nó cập nhật Point1
cũng cập nhật nó, sau đó tôi stop
bỏ chủ đề sẽ bị mất.
More Info
Một yêu cầu ajax bắt đầu bằng bốn chủ đề mà tải mẫu từ 4 url khác nhau. Tại sao tôi sử dụng chủ đề? bởi vì tôi muốn hiển thị cho người dùng những mẫu nào hiện đang được tải xuống và những mẫu nào còn lại. Tất cả các chủ đề sẽ cập nhật trạng thái của nó trong từ điển trong phiên. Sau khi các chủ đề bắt đầu, tôi thực hiện yêu cầu ajax sau mỗi hai giây và lấy từ điển từ phiên và đọc trạng thái hiện tại của luồng. Nhưng ý tưởng này thất bại vì các chủ đề độc lập với yêu cầu và phiên của họ. Mỗi yêu cầu ajax chắc chắn có phiên của nó nhưng tôi không thể vượt qua phiên đó cho chủ đề vì khi họ bắt đầu họ độc lập với phần còn lại của thế giới (Có thể tôi có thể vượt qua nó nhưng tôi có thể không vượt qua nó nhanh chóng quá trình đang được thực hiện bởi chủ đề). do đó, để giải quyết vấn đề này, tôi chọn khung bộ nhớ cache thay vì phiên. vì bộ nhớ cache có thể truy cập được từ mọi nơi. Chủ đề lưu trữ trạng thái của họ trong từ điển và đưa trở lại vào bộ nhớ cache và sau mỗi hai giây tôi lấy từ điển từ bộ nhớ cache và đọc trạng thái. Và một điều nữa theo bộ nhớ cache kinh nghiệm của tôi không phải là chủ đề an toàn. Vì vậy, trong bốn chủ đề tôi sử dụng bốn từ điển sepratelly.
Nếu tôi nhớ lại chính xác, bạn có thể chỉnh sửa câu hỏi của mình và thêm thông tin vào câu hỏi đó. – Tanriol
ok cảm ơn tôi đã thêm chi tiết trong câu hỏi. –