2

我是一名自学成才的 Python 程序员,我对一个项目有一个想法,我想用它来更好地理解 Socket 编程和网络。我希望有人能够告诉我我是否走在正确的道路上,或者将我指向另一个方向。

一般的想法是能够通过网站 UI 更新数据库,然后 Python 服务器将持续检查该数据库的更改。如果它注意到更改,它将向第一个可用的连接客户端分发一组指令。

目标是
A - 创建一个从数据库读取的服务器。
B - 创建从远程机器连接到所述服务器的客户端。
C - 然后服务器将持续读取数据库并查找更改,例如表示运行/不运行的布尔值列。
D - 如果说 run Boolean 为真,则服务器会将指令交给第一个可用的客户端。
E - 然后客户端本身将处理更新某些运行时事件的数据库

问题/疑虑
A - 我首先关心的是不断读取数据库和搜索更改所需的资源。有没有更好的方法来做到这一点?或者我可以写一个循环来做到这一点而不用太担心吗?
B - 我一直在阅读 Twisted 上的文档/教程,目前这看起来是一个可行的选择,能够处理多个客户端的连接(为了争论,20-30)。从我读过的内容来看,线程看起来比它的价值更麻烦。

我在正确的轨道上吗?有什么建议么?还是值得一看的读物?
先感谢您

4

1 回答 1

1

Django Web 框架实现了一种称为Signals的东西,它在ORM级别允许您检测对特定数据库对象的更改并将处理程序附加到这些更改。由于它是一个开源项目,您可能需要查看源代码以了解 Django 在支持多个数据库后端(Mysql、postgres、oracle、sqlite)的同时如何做到这一点。

如果您直接想监听数据库更改,那么大多数数据库都有某种记录每个事务更改的系统。例如,MySql 有二进制日志,您可以从中读取以检测对数据库的更改。

此外,虽然 Twisted 很棒,但我建议您使用Gevent/Greenlet + this。如果要与Django集成,如何结合django加gevent的基础?有助于

于 2012-10-05T18:20:37.410 回答