Py学习  »  tornado

如何在Tornado中将Web套接字连接发送到不同的进程?

aja • 7 年前 • 2122 次点击  

我正在使用Tornado实现带有Web套接字的服务器。我有一些多核CPU,我还想使用其他CPU。所以我想用python multiprocess 模块。我要接受主进程上的连接,并使用其他进程发送数据。我的问题是:

  1. 是否可以在进程之间共享套接字信息?
  2. 最好用一下吗 pickling 或者有其他方法可以使用吗?
  3. 如果我使用 酸洗 它创建的额外的重复文件描述符将影响操作系统可以处理的文件描述符的数量,或者它是进程之间共享的相同文件描述符?

说明: 会有很多传入的连接,并且会有很多来自客户端的消息,所以我不希望主事件循环在发送数据时被卡住。这就是为什么我尝试使用不同的进程将数据发送到连接。

Strace输出 我已经开始了 strace 并给出了从中向Web套接字发送数据的进程ID。的输出 斯特雷斯 如下所示:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 91.01    0.019570           0    441736           sendto
  3.60    0.000774           0     29314           read
  3.14    0.000675           0     30623           clock_gettime
  1.15    0.000248           0      2909           write
  0.96    0.000206           0     11855           epoll_wait
  0.13    0.000029           0      1534       680 recvfrom
  0.00    0.000000           0        17           open
  0.00    0.000000           0        34           close
  0.00    0.000000           0        17           stat
  0.00    0.000000           0        17           fstat
  0.00    0.000000           0        34           poll
  0.00    0.000000           0        39           mmap
  0.00    0.000000           0        26           munmap
  0.00    0.000000           0       408           brk
  0.00    0.000000           0       134           ioctl
  0.00    0.000000           0        34           socket
  0.00    0.000000           0        34        17 connect
  0.00    0.000000           0       300           setsockopt
  0.00    0.000000           0        17           getsockopt
  0.00    0.000000           0       200           fcntl
  0.00    0.000000           0        17           gettimeofday
  0.00    0.000000           0      1185           epoll_ctl
  0.00    0.000000           0       178        78 accept4
------ ----------- ----------- --------- --------- ----------------
100.00    0.021502                520662       775 total

我犯错误有什么原因吗 recvfrom connect ?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34238
文章 [ 2 ]  |  最新文章 7 年前