Python 带有阻塞调用的Nginx+FastCGI

Python 带有阻塞调用的Nginx+FastCGI,python,nginx,fastcgi,Python,Nginx,Fastcgi,Nginx的主要优点是它不需要为收到的每个请求生成单独的线程 现在,如果我们使用FastCGI运行一个基于python的web应用程序,并且这个web应用程序有阻塞调用,这会造成瓶颈吗 由于每个处理器运行1的工作进程数量有限,python脚本的阻塞调用是否会使其成为协作式多处理?Nginx通过套接字连接与fastcgi进程对话 如果fastcgi进程阻塞,这意味着它不会通过套接字发送数据 这不会阻止nginx本身,因为它会继续处理来自其他连接的事件数据。它使用非阻塞技术,如select、poll

Nginx的主要优点是它不需要为收到的每个请求生成单独的线程

现在,如果我们使用FastCGI运行一个基于python的web应用程序,并且这个web应用程序有阻塞调用,这会造成瓶颈吗


由于每个处理器运行1的工作进程数量有限,python脚本的阻塞调用是否会使其成为协作式多处理?

Nginx通过套接字连接与fastcgi进程对话

如果fastcgi进程阻塞,这意味着它不会通过套接字发送数据

这不会阻止nginx本身,因为它会继续处理来自其他连接的事件数据。它使用非阻塞技术,如select、poll或具有超时的等效OS依赖函数,在不阻塞的情况下查询套接字


但是它会暂停任何等待fastcgi输出的客户端。

为什么要通过带有fastcgi的nginx运行Python应用程序?您可以使用wsgi.1。好吧,也许这本身不是一个优势,称之为一个特性。2.据我所知,WSGI是一个接口,FastCGI上有一个WSGI包装器。3.是的,Apache可以生成进程。但这一点并不是为了产生过程。”丹尼尔罗斯曼认为第2点是对你编辑的评论的回答。如果fastcgi进程阻塞,nginx将继续处理事件。那么,它会不会开始一个新的实例呢?进程或线程或绿色线程。这就是为什么您总是创建一个后端连接池,并在它们之间进行简单的负载平衡,平均10个就足够了。@Anirudh Nginx连接到fastcgi进程,但它是。在内部,nginx有一个@Ronald,所以当一个fastcgi进程阻塞时,nginx会将上下文切换到另一个进程,直到该块被释放,是吗?@Anirudh No.重新阅读答案。nginx工作进程基本上在其所有套接字上循环以获取可用数据,并处理来自每个套接字的数据。如果一个套接字上没有数据,因为生成数据的程序卡住了,nginx将跳过该套接字并继续。