是否可以在同一个端口上运行两个不同的 gearman client/worker?
Is it possible to run two different gearman client/worker on same port?
我有一个典型的场景,我想将两个不同的工作人员置于监听模式(使用一些数据训练),并希望从不同的客户端调用。
for(100 times)
w1 (listening) <- c1 will call
result1
w2 (listening) <- c2 will call
result2
compare (result1 and result2)
w1、w2 使用机器学习算法在 不同的数据 上进行训练,因此需要时间来完成他们的过程。所以他们需要一直保持在监听模式,忍不住每次都启动。
我尝试在不同的端口 4730 和 4731 上运行它们。但我猜它只能在一个端口 4730 上运行。
客户:
class client_(object):
def __init__(self):
self.gm_client = gearman.GearmanClient(['localhost:4730'])
def callWorker(self, query):
c_result = {}
completed_job_request = self.gm_client.submit_job("db_worker", query)
c_result = completed_job_request.result
c_result = json.loads(c_result)
工人:
def __init__(self):
self.gm_worker = gearman.GearmanWorker(['localhost:4730'])
self.gm_worker.register_task('db_worker', self.testClassifier)
self.root_dir = os.getcwd()
self.trainClassifier()
如何管理这种情况?如果不清楚,请告诉我。
您还必须 运行 gearmand 服务器!
Client/Worker 库不能用于直接从客户端向工作人员发送消息。作业被发送到服务器,存储在内存队列中,并在可用时交付给相应的工作人员。
4730 是 gearmand 服务器使用的默认端口。
您必须使用 apt-get 或从 https://launchpad.net/gearmand 下载 gearmand 并启动它。
您传递给客户端和工作人员的参数是服务器的主机名和端口。服务器使用传递给 submit_job 和 register_task(在您的例子中是 "db_worker")的字符串来匹配工作和相应的工作人员。
这意味着您可以为您的两个工作人员使用相同的服务器和端口,您只需要用两个不同的函数名称注册它们。
您可以在 http://gearman.org/ but it's pretty bad... Here you can find the instructions to download and run the server: http://gearman.org/getting-started
查看文档
我有一个典型的场景,我想将两个不同的工作人员置于监听模式(使用一些数据训练),并希望从不同的客户端调用。
for(100 times)
w1 (listening) <- c1 will call
result1
w2 (listening) <- c2 will call
result2
compare (result1 and result2)
w1、w2 使用机器学习算法在 不同的数据 上进行训练,因此需要时间来完成他们的过程。所以他们需要一直保持在监听模式,忍不住每次都启动。
我尝试在不同的端口 4730 和 4731 上运行它们。但我猜它只能在一个端口 4730 上运行。
客户:
class client_(object):
def __init__(self):
self.gm_client = gearman.GearmanClient(['localhost:4730'])
def callWorker(self, query):
c_result = {}
completed_job_request = self.gm_client.submit_job("db_worker", query)
c_result = completed_job_request.result
c_result = json.loads(c_result)
工人:
def __init__(self):
self.gm_worker = gearman.GearmanWorker(['localhost:4730'])
self.gm_worker.register_task('db_worker', self.testClassifier)
self.root_dir = os.getcwd()
self.trainClassifier()
如何管理这种情况?如果不清楚,请告诉我。
您还必须 运行 gearmand 服务器! Client/Worker 库不能用于直接从客户端向工作人员发送消息。作业被发送到服务器,存储在内存队列中,并在可用时交付给相应的工作人员。
4730 是 gearmand 服务器使用的默认端口。
您必须使用 apt-get 或从 https://launchpad.net/gearmand 下载 gearmand 并启动它。 您传递给客户端和工作人员的参数是服务器的主机名和端口。服务器使用传递给 submit_job 和 register_task(在您的例子中是 "db_worker")的字符串来匹配工作和相应的工作人员。
这意味着您可以为您的两个工作人员使用相同的服务器和端口,您只需要用两个不同的函数名称注册它们。
您可以在 http://gearman.org/ but it's pretty bad... Here you can find the instructions to download and run the server: http://gearman.org/getting-started
查看文档