我是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 回答
是的,这是可能的 . 例如,http://mysql-python.sourceforge.net/MySQLdb.html是/可以是线程安全的 . 您可以在启动forks之前连接,也可以使用全局变量 . 它不漂亮但会起作用 .
您可以将连接作为参数传递给构造函数 . 如果你粘贴一些有问题的代码会更好 .