Мне нужно создать простую распределенную p2p-систему с кольцевой структурой, в которой производитель и потребитель взаимодействуют друг с другом для заключения сделки.Мы обязаны построить его, используя потоки или сокеты.Я использую Pyro, но я не могу понять, как обрабатывать потоки производителя или потребителя.В идеале потребитель должен создать поток для отправки запроса обоим соседям.Соседи могут быть потребителями или производителями и передавать запрос своим соседям.Если производитель найден, запрос ПРЕДПОЛАГАЕТСЯ отследить до источника (потребителя) до того, как будет установлено прямое соединение между prod и cons и когда транзакция состоится.
Требуется порождать потоки для каждого из них.новое сообщение или управление пулом потоков.Пока что у меня есть класс Pyro, который выглядит следующим образом:
import threading
import Pyro4
class Peer(object):
def __init__():
#sets up quantity, lock, id, neighbourlist
#neighbour list has max 2 entries
def lookup():
# creates a msg object to be sent to forward()
def forward():
#sends msg to neighbors by creating proxies and calling
#the receive method on them
def receive():
#called when a msg is received. acquires lock and accesses the
#quantity. releases lock if not a producer or quantity is low
class Message(object):
def __init__(params):
#sets up a message object with the given params like
#msgid, consumerid, quan, producerid, forwarder_id(so that the message is not sent backwards)
Я пытался сделать класс Peer подклассом Threading.Thread, но когда я использовал прокси Pyro для вызова метода start ()потоки выдавали мне ошибку:
AttributeError: удаленный объект 'PYRO: obj_32f7c4e3f79146ac94a3389303e45361 @ localhost: 35275' не имеет открытого атрибута или метода 'start'
Могут ли удаленные объекты не обращаться к методам суперкласса?Как мне исправить это?