我如何才能为不同的线程阻塞一部分代码?

时间:2020-06-07 14:52:49

标签: python-3.x sqlalchemy client-server python-multiprocessing

您好,我正在创建一个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)

谢谢!

0 个答案:

没有答案