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

What is the best way to manage db connection in a preforking daemon

我对python非常陌生,正在使用pythons socketserver.forkingtcpserver创建一个需要连接到数据库(mysql)的网络脚本。我预计这个节目每秒会受到大约30-40次的冲击。是否可以跨进程共享相同的数据库连接?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import os
import SocketServer
import MySQLdb

class EchoHandler(SocketServer.StreamRequestHandler):
    def handle(self):
                self.wfile.write("SET VARIABLE DBDIALSTRING dbstuff
"
)
                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"
bailing..."

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

可以将连接作为参数传递给构造函数。最好是粘贴一些有问题的代码。