Multithreading Cherrypy_处理请求
我已经找了一段时间了,但找不到答案。 我知道cherrypy创建了一个新线程来处理请求(GET、PUT、POST、DELETE等) 现在我获取如下参数:Multithreading Cherrypy_处理请求,multithreading,cherrypy,Multithreading,Cherrypy,我已经找了一段时间了,但找不到答案。 我知道cherrypy创建了一个新线程来处理请求(GET、PUT、POST、DELETE等) 现在我获取如下参数: ... @cherrypy.tools.json_in() @cherrypy.tools.json_out() def POST(self): Forum.lock_post.acquire() conn = self.io.psqlConnect(self.dict_psql) cur = conn.cursor(curs
...
@cherrypy.tools.json_in()
@cherrypy.tools.json_out()
def POST(self):
Forum.lock_post.acquire()
conn = self.io.psqlConnect(self.dict_psql)
cur = conn.cursor(cursor_factory = psycopg2.extras.RealDictCursor)
params = cherrypy.request.json
...
return some_dict
正如您所见,我正在锁定线程,以避免变量params上的争用条件。但这真的有必要吗?我在问,因为如果我这样做的话,所有其他的邮件请求将不得不等待。有没有更好的解决方案,而不锁定整个岗位?我在代码中多次使用了params。首先需要澄清的是,CherryPy并没有为每个请求创建一个新线程,它有一个预先确定的线程池(默认情况下为10个),实际上一次可以使用一个线程来处理单个请求 至于是否应该锁定
cherrypy.request.json
。你真的不知道,有一个叫做“线程局部变量”的概念,根据哪个线程访问不同的对象,你可以在这个概念上有多个对不同对象的引用。()
话虽如此。。。您应该确保您编写的代码不会干扰其他线程的状态(您可以使用cherrypy.thread\u数据作为快速修复)
看看cherrypy插件体系结构,如果你想在线程之间共享资源,插件通常是一种方式:首先澄清一下,cherrypy不会为每个请求创建一个新线程,它有一个预先确定的线程池(默认为10个),实际上,一次可以使用一个线程来处理单个请求
至于是否应该锁定cherrypy.request.json
。你真的不知道,有一个叫做“线程局部变量”的概念,根据哪个线程访问不同的对象,你可以在这个概念上有多个对不同对象的引用。()
话虽如此。。。您应该确保您编写的代码不会干扰其他线程的状态(您可以使用cherrypy.thread\u数据作为快速修复)
查看cherrypy插件体系结构,如果您希望在线程之间共享资源,通常插件可以: