1

我对 python 很陌生,并且正在使用 pythons SocketServer.ForkingTCPServer 创建一个需要连接到数据库(mysql)的网络脚本。我预计该程序每秒会受到 30 到 40 次左右的攻击。是否可以跨进程共享相同的数据库连接?

导入操作系统
导入套接字服务器
导入 MySQL 数据库

类 EchoHandler(SocketServer.StreamRequestHandler):
    def 句柄(自我):
                self.wfile.write("SET VARIABLE DBDIALSTRING dbstuff \n")
                self.wfile.flush()
                self.conn.close()

如果 __name__ == '__main__':


    conn = MySQLdb.connect (host = "10.0.0.12", user = "dbuser", passwd = "secert", db = "dbname")
    SocketServer.ForkingTCPServer.allow_reuse_address = 1
    服务器 = SocketServer.ForkingTCPServer(('10.0.0.10', 4242), EchoHandler)
    print "服务器正在监听 localhost:4242..."
    尝试:
        server.allow_reuse_address
        server.serve_forever()
    除了键盘中断:
        print "\n保释..."
4

1 回答 1

0

是的,这是可能的。例如这个http://mysql-python.sourceforge.net/MySQLdb.html是/可以是线程安全的。您可以在开始分叉之前进行连接,而不是使用全局变量。它不漂亮,但会起作用。

您可以将连接作为参数传递给构造函数。如果您粘贴一些有问题的代码会更好。

于 2011-07-29T14:31:04.237 回答