gpt4 book ai didi

python - 如何让 CherryPy 服务于并发请求?

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:11 24 4
gpt4 key购买 nike

我读到 cherrypy 使用自己的线程池。但我看不到这样做的好处。

假设我触发了一个需要很长时间的请求,然后在另一个选项卡中我触发了一个需要很短时间的请求。如果它真的使用多线程,短请求应该在长请求之前完成。但我看到首先完成长请求,然后完成短时间,就好像所有事情都是按顺序处理的。

我尝试过与不同的 uWSGI 框架(如 Tornado 和 twistd)集成,但我仍然看不出有什么不同。 http://cherrypy.readthedocs.org/en/latest/deploy.html#tornado

这是我的入门代码。有人可以帮我吗?

cfg = {
'global' : {
'server.socket_host' : Utils.gflags.FLAGS.bind_addr,
'server.socket_port' : Utils.gflags.FLAGS.bind_port,
'server.thread_pool' : 10,
'engine.timeout_monitor.frequency' : gflags.FLAGS.request_time_out_secs,
},
'/static' : {"tools.sessions.on": False, 'tools.auth.on': False},
'/favicon.ico' : {"tools.sessions.on": False, 'tools.auth.on': False},
}

# To turn off the cherrypy errors on screen.
cfg['global'].update({'log.screen': False})
cfg['/static'].update({'tools.staticdir.on': True})
cfg['/static'].update({'tools.staticdir.dir': Utils.gflags.FLAGS.static_dir})
cfg['/favicon.ico'].update({'tools.staticfile.on': True})
cfg['/favicon.ico'].update({'tools.staticfile.filename':
Utils.gflags.FLAGS.favicon_file})


# Disable the auto reload on code change.
cherrypy.engine.autoreload.unsubscribe()

# Start the cherrypy
#Root() is defined somewhere else. Don't worry about that
cherrypy.quickstart(Root(), config = cfg)

最佳答案

是的,您似乎遇到了这篇关于 session 锁定的博文中提到的相同问题:http://blog.schmichael.com/2007/09/20/session-locking-and-performance-in-cherrypy/

基本上,解决方案是在代码中的不同位置显式锁定您的 session ,这样它就不会阻止所有其他请求。

cherrypy.session.acquire_lock()
cherrypy.session.release_lock()

关于python - 如何让 CherryPy 服务于并发请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28190526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com