2011-07-29 9 views
0

私はPythonにはかなり新しく、pythons SocketServer.ForkingTCPServerを使ってデータベース(mysql)に接続する必要があるネットワークスクリプトを作成しています。私は、プログラムが約30〜40回/秒でヒットすると期待しています。プロセス間で同じデータベース接続を共有することは可能ですか?preforkingデーモンでdb接続を管理する最善の方法は何ですか

 
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..." 

答えて

0

はい、可能です。たとえば、このhttp://mysql-python.sourceforge.net/MySQLdb.htmlはスレッドセーフである可能性があります。フォークを開始する前に接続し、グローバル変数を使用するよりも前に接続することができます。それはかなりではありませんが、うまくいくでしょう。

接続をコンストラクタのパラメータとして渡すことができます。 問題のコードを貼り付ける方が良いでしょう。

+0

ありがとうございます!それはかなり私の質問に答える、今私はちょうど私のクラスにそれを渡す方法を把握する必要があります:)提案として私はコードを掲載した。 – Jesse

関連する問題