2011-07-29 3 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

관련 문제