Каков наилучший способ управления подключением к БД в демоне preforking? - PullRequest
1 голос
/ 29 июля 2011

Я довольно новичок в 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..."

1 Ответ

0 голосов
/ 29 июля 2011

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

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

...