Я в настоящее время есть класс MyLoadBalancerSingleton
, который управляет доступом к группе ресурсов (resource1
и resource2
). Класс имеет методы и delete (count). Когда эти методы вызывают, балансировщик нагрузки будет помещать в очередь запрос, а затем обрабатывает его FIFO на ресурсах.
Естественно, должен быть только один балансировщик нагрузки, в противном случае каждый из них будет считать, что они имеют полный контроль над ресурсами, которыми управляют.
Вот проблема:
Несколько пользователей одновременно пытаются получить доступ к балансировкам нагрузки с графическим интерфейса. Каждый пользователь будет создавать свой собственный графический интерфейс через python gui.py
на том же компьютере. (Они будут все ssh в одну машину). Таким образом, каждый графический интерфейс будет работать в собственном процессе. Затем GUI попытается связаться с балансировщиком нагрузки.
Возможно ли, что эти несколько процессов с графическим интерфейсом доступны только для одного процесса балансировки нагрузки и вызывают методы балансировки нагрузки?
Я заглянул в библиотеку multiprocessing
, и кажется, что рабочий процесс противоположный тому, что я хочу. В моем примере это будет: Процесс Loadbalancer запускает 2 процесса GUI (дочерний), а затем разделяет родительские ресурсы с дочерним. В моем примере как графический интерфейс, так и балансировка нагрузки - это процессы верхнего уровня. (Нет отношения родитель-ребенок)
Я подозреваю, что Синглтон не является правильным словом, поскольку одиночные игры работают только в одном процессе. Может быть, запустить балансировку нагрузки как процесс демона, а затем подключить к ним эти процессы графического интерфейса? Я пробовал искать IPC, но это просто привело меня к модулю multiprocessing
, который не то, что я хочу. distributed, cluster computing modules (dispy)
не то, что я хочу. Это строго обрабатывает связь между собой (IPC?) На одной машине.
Это подводит меня к моему первоначальному вопросу: Возможно ли разрешить нескольким процессам подключаться к одноточечному процессу и вызывать вызовы методов или доступ к его ресурсам? Все процессы будут выполняться на одной машине.
Фиктивные псевдокод:
LoadBalancer.py
class MyLoadBalancerSingleton(object):
def __init__():
# Singleton instance logic here
# Resource logic here
def create(count):
resource1.create(count)
resource2.create(count)
def delete(count):
resource1.delete(count)
resource2.delete(count)
Gui.py
class GUI(object):
def event_loop():
# count = Ask for user input
# process = Locate load balancer process
# process.create(count)
# process.delete(count)
Спасибо за ваше время!
Отличный ответ. Он предоставил обзор и возможности каждого варианта. Спасибо! – lbrtdy
Нет проблем, и удачи в вашем проекте! Кроме того, добро пожаловать в StackOverflow! Быстрый совет: если вы считаете, что ответ хороший (стоит признать, даже если это не самый лучший ответ), вы можете нажать стрелку вверх рядом с ним, чтобы увеличить его видимость. Обычно я также упоминал галочку «принять этот ответ», но вы уже попали в нее. – CBHacking