Estoy almacenando un diccionario en una sesión de Django a la que pueden acceder varios hilos. Todos los hilos pueden actualizar ese diccionario, los hilos también obtienen valores del diccionario para ejecutar el proceso. Quiero saber si la sesión de Django es segura o tengo que usar bloqueos o semáforos.¿Es seguro un hilo de sesión de Django?
ejemplo típico:
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)
Hace existe la posibilidad de que cuando diccionario hilo Point2
actualización en sesión justo después de que actualiza Point1
también actualizarlo, entonces mi stop
para dejar de hilo se pierde.
Más información
una petición Ajax inicia cuatro hilos que muestras de su descarga desde los 4 URLs diferentes. ¿Por qué usé hilos? porque quiero mostrar al usuario qué muestras se están descargando actualmente y cuáles quedan. Todos los hilos actualizarán su estado en el diccionario dentro de la sesión. Después de que se iniciaron los hilos, hago una solicitud ajax después de cada dos segundos y tomo el diccionario de la sesión y leo el estado actual de los hilos. Pero esta idea falló porque los hilos son independientes de la solicitud y su sesión. Cada solicitud de AJAX definitivamente tiene su sesión, pero no puedo pasar esa sesión a hilos porque cuando una vez comienzan son independientes del resto del mundo (puede ser que pueda pasarlo pero no puedo pasarlo tan rápido que el proceso está siendo realizado por el trapos). para abordar este problema, elijo el marco de caché en lugar de la sesión. como la memoria caché es accesible desde cualquier lugar. Los threads almacenan su estado en el diccionario y lo vuelven a poner en caché y cada dos segundos tomo el diccionario del caché y leo el estado. Y una cosa más de acuerdo con mi caché de experiencia no es seguro para subprocesos. Entonces, para cuatro hilos, utilicé cuatro diccionarios por separado.
Si no recuerdo mal, puede editar su pregunta y agregarle la información. – Tanriol
ok gracias agregué más detalles en la pregunta. –