CherryPy, Threads und Member-Variablen; mögliche Probleme?

Angenommen, ich habe die folgende einfache Klasse:

import cherrypy
import os

class test:
  test_member = 0;
  def __init__(self):
    return
  def index(self):
    self.test_member = self.test_member + 1
    return str(self.test_member)
  index.exposed = True

conf = os.path.join(os.path.dirname(__file__), 'config.ini')

if __name__ == '__main__':
  # CherryPy always starts with app.root when trying to map request URIs
  # to objects, so we need to mount a request handler root. A request
  # to '/' will be mapped to HelloWorld().index().
  cherrypy.config.update({'server.socket_host': '0.0.0.0'})
  cherrypy.quickstart(test(), config=conf)
else:
  # This branch is for the test suite; you can ignore it.
  cherrypy.config.update({'server.socket_host': '0.0.0.0'})
  cherrypy.tree.mount(test(), config=conf)

Wenn ich meine Indexseite das erste Mal öffne, erhalte ich 1, das nächste Mal 2, dann 3, 4 und so weiter. Meine Fragen sind:

Gibt es große Gefahren, insbesondere wenn Threads und mehrere Personen gleichzeitig auf die Seite zugreifen?Muss ich die Mitgliedsvariable bei jedem Schreiben auf irgendeine Weise sperren, um Probleme zu vermeiden?Ändert sich etwas, wenn ich als Member (z. B. meine eigene, komplizierte Klasse) einen Nicht-Basisdatentyp verwende und nicht nur eine Ganzzahl?

Ich verstehe nicht ganz, wie das Threading mit CherryPy funktioniert. In diesem einfachen Beispiel gehe ich davon aus, dass das test_member in einem Thread einer Sache gleich sein könnte und beim Zugriff von einem anderen Thread aus etwas völlig anderes. Ich entschuldige mich im Voraus, wenn mir etwas fehlt, das gut dokumentiert ist, aber ein bisschen googeln hat nicht wirklich das ergeben, wonach ich gesucht habe. Ich verstehe für ein so einfaches Beispiel, dass es eine Reihe relativ einfacher Pfade gibt, die potenzielle Probleme hier lösen können (den Status der Variablen in einer Datenbank oder etwas in dieser Richtung beibehalten), aber das funktioniert in meinem tatsächlichen Anwendungsfall nicht .

Antworten auf die Frage(1)

Ihre Antwort auf die Frage