在preforking守护进程中管理数据库连接的最佳方法是什么?

我对Python很新,并且使用pythons SocketServer.ForkingTCPServer来创建需要连接到数据库(mysql)的网络脚本。 我预计该计划每秒钟会以大约30-40次的速度上升。 是否有可能跨进程共享相同的数据库连接?

import os
import SocketServer
import MySQLdb

class EchoHandler(SocketServer.StreamRequestHandler):
    def handle(self):
                self.wfile.write("SET VARIABLE DBDIALSTRING dbstuff n")
                self.wfile.flush()
                self.conn.close()

if __name__ == '__main__':


    conn = MySQLdb.connect (host = "10.0.0.12", user = "dbuser", passwd = "secert", db = "dbname")
    SocketServer.ForkingTCPServer.allow_reuse_address = 1
    server = SocketServer.ForkingTCPServer(('10.0.0.10', 4242), EchoHandler)
    print "Server listening on localhost:4242..."
    try:
        server.allow_reuse_address
        server.serve_forever()
    except KeyboardInterrupt:
        print "nbailing..."

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

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

链接地址: http://www.djcxy.com/p/56449.html

上一篇: What is the best way to manage db connection in a preforking daemon

下一篇: problem with xmlrpc server