【问题标题】:Threads vs Workers in CherryPyCherryPy 中的线程与工人
【发布时间】:2020-08-16 17:43:49
【问题描述】:

我不清楚线程和工人的概念。我们可以将与 CherryPy 服务器关联的线程数分配为,

server = Server()
server.socket_port = port
server.socket_host = "0.0.0.0"
server.thread_pool = 100

没有用于定义工作程序的属性,这是否意味着我正在实例化的服务器是唯一的工作程序,并且在 thread_pool 属性中关联的线程是它在为应用程序提供服务时可以使用的最大线程数(主要是并发请求)。或者有没有办法在 CherryPy 中定义工人的数量。

感谢任何帮助!

【问题讨论】:

  • 线程是工人。为了处理每个请求,使用一个线程并在其中运行所选的处理程序。这就是 IIUC 在这种情况下您所说的工人的意思。
  • 另外,您设置的主机不正确。它应该只是 0.0.0.0::,因为它是网络接口名称,而不是 URL。
  • 我这里的 socket_host 数据输入错误,现在更正

标签: python multithreading webserver wsgi cherrypy


【解决方案1】:

我能理解您的困惑,因为众所周知,Cherrypy 的文档记录很差。

要理解workerthread 的概念,我们需要退一步学习一个典型的cherrypy 应用程序的结构。

当您运行服务器应用程序时,您会启动一个进程。该进程包含一个主线程,即cherrpy.enginecherrypy.engine 启动服务器,该服务器在自己的线程中运行。 cherrypy.tree 拥有一系列页面处理程序,每个处理程序都可能是worker。但是,worker 是否有自己的线程要运行,还是必须等到其他workers 完成并释放线程,完全取决于剩下多少线程。 一旦worker 获得免费的thread,它就会变成worker thread,并立即开始工作。

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2016-04-22
    • 2012-04-14
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多