2011-07-29 2 views
0

Я довольно новичок в python и использую питоны SocketServer.ForkingTCPServer для создания сетевого сценария, которому необходимо подключиться к базе данных (mysql). Я ожидаю, что программа получит удар примерно в 30-40 раз в секунду. Можно ли использовать одно и то же соединение с базой данных в процессах?Каков наилучший способ управления подключением 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

Смежные вопросы