【发布时间】:2017-01-13 10:27:33
【问题描述】:
我尝试构建一个压力测试系统,提供多个并发用户登录。该方案是 1 个线程用于 1 个用户登录。但我不能同时登录多个用户(并发)。
另一方面,我尝试使用多个用户以顺序方案登录(使用 thread.lock 和 thread.release 通过登录方法),它可以工作。
我可以在这样的python线程方案上同时与多个用户登录吗?
这是我的代码 (更新: 我已经更新了我的代码,现在我尝试使用多线程通过 xml_rpc 读取。 打开连接/登录没问题,但我总是得到阅读方法返回失败.. ):
这个线程类:
class theUser (threading.Thread):
def __init__(self, threadID, row, dbhost, xml_port, dbuser, dbpassword, dbname):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = str(row[0])
self.pswd = str(row[1])
self.msg = ''
self.xml_port = xml_port
self.params={'dbhost' : dbhost,
'dbuser' : dbuser,
'dbpassword': dbpassword,
'dbname' : dbname,
'user' : str(row[0]),
'password' : str(row[1])
}
def run(self):
try:
self.sock_common = xmlrpclib.ServerProxy ('http://%s:%s/xmlrpc/common' % (dbhost, xml_port))
self.uid = self.sock_common.login(self.params['dbname'], self.name, self.pswd)
self._read_data()
except:
return
def _read_data(self):
self.ids = [1,2,3,10]
self.sock_common.execute(self.params['dbname'], self.uid, self.params['password'], 'res.partner', 'read', self.ids, ['name'])
这是主要代码:
for row in reader:
print idx, xml_port, row
if idx == 0:
header = row
else:
# Create new User threads
thread_ = theUser(idx, row, dbhost, xml_port, dbuser, dbpassword, dbname)
# Start new User Threads
thread_.start()
# Add threads to thread list
threads.append(thread_)
idx += 1
请帮帮我..
【问题讨论】:
标签: python multithreading openerp python-multithreading stress-testing