我正在使用带有cherrypy服务器的瓶子来利用多线程。据我了解,这使得每个请求都由不同的线程处理。所以给出以下代码:
from bottle import request, route
somedict = {}
@route("/read")
def read():
return somedict
@route("/write", method="POST")
def write():
somedict[request.forms.get("key")] = request.forms.get("value")
somedict 会是线程安全的吗?如果运行一个守护线程来管理某个字典,比如说它是一个活动会话的字典并且守护线程修剪过期的会话怎么办?如果不是,一个简单的锁定机制就足够了,我是否需要在读取、写入和在守护线程中使用它,或者只是在守护线程中使用它?
另外据我了解,cherrypy 是一个真正的多线程服务器。在使用cherrypy作为python线程不是真正的线程时,是否应该使用更合适的方法来暗示守护程序线程?我不想深入研究cherrypy环境,更愿意在这个项目中坚持使用bottle,所以如果它涉及从bottle/将我的应用程序迁移到cherrypy,那么现在这并不重要。我仍然想知道,因为我在他们关于线程的文档中没有看到太多。