Linux下前台web配置,后台守护线程这样的模型大家是怎么用Python实现的?

2014-02-08 17:50:40 +08:00
 codegear
基本需求是:
1. 后台有个root权限的守护进程;
2. 前台需要能通过网页(server)对后台的守护进程发出命令;
3. 能尽可能少的占用内存(<5M最好,因为要跑在极小内存的虚拟机上);
4. 前后台不涉及任何数据库。

现在考虑全部用python来写。

我目前的一点想法是这样的:
1. 首先考虑到安全问题,网页的server不与守护进程共享同一个进程。用root起守护进程,用普通用户起web server。但是这样的问题是需要起两个python进程,而我试了bottle, web.py这样的框架至少需要7M内存,那么两个进程的开销势必会超过10M;
2. 如果守护进程与web server的通信使用http,则守护进程用web框架即可实现,但感觉http有些大材小用;如果通信用unix_socket,不知道在python上有没有简易的框架好实现。

不知道各位遇到这样的需求是怎么做的,先行感谢!
3734 次点击
所在节点    Python
2 条回复
yueyoum
2014-02-08 18:13:25 +08:00
最简单的就是 定义好协议,(可以自己组织二进制,也可以用protobuf 这些现成的东西)

然后 你的服务监听在一个端口上,TCP连接,收到数据处理返回即可。

为了更方便一点,可以用 zeromq 这种socket封装,极大的方便的你的工作。
而且如果 服务是独立的, 你就会发现zeromq的好处了, 起多个服务,一起来处理请求。

当然,单进程如果合适 也可以用gevent来提高响应。

最后将整个程序 daemonize即可, 可以用 supervisor
也可以看看我写的一个 daemonize的工具, 只要自己处理好日志就行:
https://github.com/yueyoum/daemonize


如果内存限制再大点,使用最方便的应该就是 celery了。
mkeith
2014-03-06 09:36:33 +08:00

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

https://www.v2ex.com/t/99380

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

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

© 2021 V2EX