您好,我正在创建一个python客户端-服务器应用程序,每次连接新客户端时,服务器都会为每个客户端启动一个新线程。
客户可以执行的任务之一是编辑票证。这就是问题所在,如果他们试图编辑具有相同ID的代码,我想为他们阻止一部分代码,但是如果他们不希望,他们应该能够编辑其他代码。我认为我应该实现多处理。 Semaphore(),但我真的不知道如何。
启动新线程的服务器代码部分。
while True:
c, addr = s.accept()
th = threading.Thread(target=newClient, args=(c, addr,lock,))
th.start()
如果服务器关键行试图编辑同一票证,我必须阻止它们
params_applied = editionFiltred(recievingId,modifiers_decoded,data_ticket)
editTicket(recievingId, params_applied)
edited_ticket = getTicketbyId(recievingId)
客户端每次编辑票证时服务器调用的功能
def editTicket(id,params_applied):
ticketModeable = session.query(Ticket).get(int(id))
ticketModeable.title = params_applied[0]
ticketModeable.description = params_applied[1]
ticketModeable.status = params_applied[2]
session.add(ticketModeable)
try:
session.commit()
except SQLAlchemyError as e:
session.rollback()
print(e)
谢谢!