1

私はpythonを初めて使用し、pythons SocketServer.ForkingTCPServerを使用して、データベース(mysql)に接続する必要があるネットワークスクリプトを作成しています。プログラムは 1 秒間に約 30 ~ 40 回ヒットすると予想されます。プロセス間で同じデータベース接続を共有することは可能ですか?

OS のインポート
SocketServer のインポート
MySQLdb のインポート

クラス EchoHandler(SocketServer.StreamRequestHandler):
    デフハンドル(自己):
                self.wfile.write("SET VARIABLE DBDIALSTRING dbstuff \n")
                self.wfile.flush()
                self.conn.close()

__name__ == '__main__' の場合:


    conn = MySQLdb.connect (ホスト = "10.0.0.12"、ユーザー = "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 に答える