Dal*_*len 2 python sockets ipc object
假设我们有一个用 Python 编写的服务器应用程序。
也可以说这个主服务器进程在启动时又分叉了两个进程。
服务器等待它的客户端,当它到来时决定两个分叉进程中的哪一个应该通过客户端的套接字。
我不想每次有客户来就 fork 一个进程;我想要固定数量的服务器,但是一个主服务器接收连接,然后将它传递给处理请求的特定工作客户端的服务器。
这应该是DOS攻击防护、作业分离等。
有什么技巧可以在启动的 Python 程序之间传递 Python 对象。
一些共享内存或类似的东西?
酸洗套接字对象并通过 IPC 推送它会起作用吗?
酸洗套接字对象并通过 IPC 推送它会起作用吗?
不。该对象内部是文件描述符或内核套接字句柄。它只是进程在进行系统调用时用来识别套接字的一个数字。
如果您腌制该 Python 套接字对象并将其发送到另一个进程,该进程将使用它未打开的套接字的句柄。或者更糟的是,该句柄可能指向不同的打开文件。
处理这个问题的最有效方法(在 Linux 上)是这样的:
accept()并阻塞,等待新的连接这样,您就可以让内核处理负载平衡。
如果你不希望这种行为,有是一个办法(在UNIX中),以开放的插座传递到另一个进程。同样,这不仅仅是手柄;内核有效地将打开的套接字复制到进程的打开文件列表中。这种机制被称为SCM_RIGHTS,你可以在这里看到一个例子(在 C 中):http :
//man7.org/tlpi/code/online/dist/sockets/scm_rights_send.c.html
否则,您的主进程将需要有效地代理与子进程的连接,从而降低系统的效率。