Как лучше всего управлять подключением к базе данных в демоне предварительной установки

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

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

person Jesse    schedule 29.07.2011    source источник


Ответы (1)


Да, это возможно. Например, это http://mysql-python.sourceforge.net/MySQLdb.html / может быть потокобезопасным. Вы можете подключиться перед запуском вилок, а затем использовать глобальную переменную. Это некрасиво, но будет работать.

Вы можете передать соединение в качестве параметра конструктору. Будет лучше, если вы вставите какой-нибудь рассматриваемый код.

person baklarz2048    schedule 29.07.2011
comment
Спасибо! Это в значительной степени отвечает на мой вопрос, теперь мне просто нужно выяснить, как передать его в мой класс :) Как и предполагалось, я опубликовал код. - person Jesse; 29.07.2011