uWSGI相当于Django-Channels

时间:2017-04-05 22:55:54

标签: django django-channels

我知道Django是请求/响应周期,而Django频道是不同的,我的问题不在此。

我们知道uWSGI / gunicorn会创建工作进程,并且可以配置为执行线程中的每个请求。这样它就可以在10个线程的单个uWSGI工作进程中“同时”(不并行)提供10个请求。

现在让我们假设每个Web客户端都想使用Django Channels创建一个websocket,从我有限的理解(使用vanilla实现),它将在一个线程中处理每个消息,这意味着,同时处理x个连接数量,您需要x个通道工作进程。我知道有人会建议增加流程数量,我不是在这里就此进行辩论。

我的问题是,是否有任何现有的库与uWSGI / gunicorn在线程中执行消费者功能的工作类似?

2 个答案:

答案 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;

我一直在生产中使用它,看起来还不错。