Python 怎么监听多个端口的 http 消息?

2020 年 4 月 4 日
 PPTX

端口可能会动态变化

6097 次点击
所在节点    Python
17 条回复
black11black
2020 年 4 月 4 日
奇怪的需求,不知道原生有没有人做这种。aiohttp 有抽象 http 协议接口,你自己写重构逻辑层的话可以实现多监听。不想大动干戈的最简单方法是找一些业务的 tricky point,deamon 线程随着端口变化动态绑定服务端口。
ClericPy
2020 年 4 月 4 日
丢给 upstream 那头 nginx 负责转发?
est
2020 年 4 月 4 日
如果有别的语言的例子,抄一个
lithbitren
2020 年 4 月 4 日
另写一个进程管理,多进程启动多个服务,不需要的服务可以直接把进程扬了。
cz5424
2020 年 4 月 4 日
百度一下抓包软件的实现方法
SingeeKing
2020 年 4 月 4 日
核心逻辑起一个项目 A,网络相关的起一个项目 B,再来一个项目 C 专门进行网络项目的启动管理。

然后网络相关的都转发到 A 进行,C 专门用来启动多个 B
PPTX
2020 年 4 月 4 日
我表述的有点问题,程序需要接收多个端口的 http 消息,且端口数量和端口号可能动态变化
PPTX
2020 年 4 月 4 日
@black11black 我表述的有点问题,程序需要接收多个端口的 http 消息,且端口数量和端口号可能动态变化
@cz5424
@ClericPy
@lithbitren
@SingeeKing
@ClericPy
@est
chibupang
2020 年 4 月 4 日
如果是 Java 可以通过 NIO Selector 注册事件来实现.....Python 打扰了....
NYGK
2020 年 4 月 4 日
最直接的办法 multiprocessing 开多进程,每个进程监听一个;
如果需要需要变更端口监听可以创建新进程或者 kill 原有进程。这方法最直接但是有点蠢。
ipwx
2020 年 4 月 4 日
上 aio 啊。所有 server socket 的 coroutine 把任务扔给 executor 不就行了。监听和执行分割开来就行了,以后你想上非 http 也易如反掌。
tempdban
2020 年 4 月 5 日
raw socket
FINDNOMORE
2020 年 4 月 5 日
如果只是验证的话,自己用 socket 套接字手动绑定接受就可以了
keenkiller
2020 年 4 月 5 日
Go 的话很简单…python 你只能多进程了
black11black
2020 年 4 月 5 日
@ipwx aiohttp 的 serve 默认阻塞的,相当于接管事件循环。你要从 socket 搭的话相当于重新实现 http 协议。
ipwx
2020 年 4 月 5 日
@black11black asyncio 的 executor 支持线程池啊。aiohttp 接受到的请求,然后用 asyncio Queue 把 task 塞进去,阻塞的东西算完,然后再把结果在 http 的 coroutine 上通过 await 弄回来不久行了???整个过程不会阻塞 http 的事件循环。
julyclyde
2020 年 4 月 5 日
基本上可以猜到是需求有问题

多开几个 listener 呗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/659335

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX