我知道Django是请求/响应周期,而Django频道是不同的,我的问题不在此。
我们知道uWSGI / gunicorn会创建工作进程,并且可以配置为执行线程中的每个请求。这样它就可以在10个线程的单个uWSGI工作进程中“同时”(不并行)提供10个请求。
现在让我们假设每个Web客户端都想使用Django Channels创建一个websocket,从我有限的理解(使用vanilla实现),它将在一个线程中处理每个消息,这意味着,同时处理x个连接数量,您需要x个通道工作进程。我知道有人会建议增加流程数量,我不是在这里就此进行辩论。
我的问题是,是否有任何现有的库与uWSGI / gunicorn在线程中执行消费者功能的工作类似?
答案 0 :(得分:1)
我认为你要求daphne。它在channels document本身中提到过。
答案 1 :(得分:0)
Daphne提供了扩展流程using a shared FD的选项。不幸的是,它没有按预期工作。
Rightnow,更好的选择是使用uvicorn。您可以使用
运行多个工作程序library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity var_p is
Port (
CLK100MHZ : in std_logic;
sw : in std_logic_vector( 15 downto 0 );
LED : out std_logic_vector( 15 downto 0 )
);
end var_p;
architecture Behavioral of var_p is
begin
var_p : process( CLK100MHZ )
variable var : integer range 0 to 15;
begin
if rising_edge( CLK100MHZ ) then
var := 0;
LED <= ( others => '0' );
for i in SW'range loop
if sw( i ) = '1' then
var := var + 1;
LED( var ) <= '1';
end if;
end loop;
end if;
end process;
end Behavioral;
我一直在生产中使用它,看起来还不错。