python簡單分布式demo

2022-04-11 18:38:32 字數 2409 閱讀 8430

a伺服器是master,b伺服器為worker,

a伺服器上執行taskmanger.py

#

coding:utf-8

import

random,time,queue

from multiprocessing.managers import

basemanager

#實現第一步:建立task_queue和result_queue,用來存放任務和結果

task_queue=queue.queue()

result_queue=queue.queue()

class

queuemanager(basemanager):

pass

#實現第二步:把建立的兩個佇列註冊在網路上,利用register方法,callable引數關聯了queue物件,

#將queue物件在網路中暴露

queuemanager.register('

get_task_queue

',callable=lambda

:task_queue)

queuemanager.register(

'get_result_queue

',callable=lambda

:result_queue)

#實現第三步:繫結埠8001,設定驗證口令『qiye』。這個相當於物件的初始化

manager=queuemanager(address=('',8001),authkey='

lsf')#

實現第四步:啟動管理,監聽資訊通道

manager.start()

#實現第五步:通過管理例項的方法獲得通過網路訪問的queue物件

task=manager.get_task_queue()

result=manager.get_result_queue()

#實現第六步:新增任務

for url in ["

imageurl_

"+str(i) for i in range(10)]:

print

'put task %s ...

' %url

task.put(url)

#獲取返回結果

print

'try get result...

'for i in range(10):

print

'result is %s

' %result.get(timeout=10)

#關閉管理

manager.shutdown()

b伺服器上執行worker的指令碼taskworker.py

#

coding:utf-8

import

time

from multiprocessing.managers import

basemanager

#建立類似的queuemanager:

class

queuemanager(basemanager):

pass

#實現第一步:使用queuemanager註冊獲取queue的方法名稱

queuemanager.register('

get_task_queue')

queuemanager.register(

'get_result_queue')

#實現第二步:連線到伺服器:

server_addr = '

127.0.0.1

'print('

connect to server %s...

' %server_addr)

#埠和驗證口令注意保持與服務程序設定的完全一致:

m = queuemanager(address=(server_addr, 8001), authkey='

lsf')#

從網路連線:

m.connect()

#實現第三步:獲取queue的物件:

task =m.get_task_queue()

result =m.get_result_queue()

#實現第四步:從task佇列取任務,並把結果寫入result佇列:

while(not

task.empty()):

image_url = task.get(true,timeout=5)

print('

run task download %s...

' %image_url)

time.sleep(1)

result.put(

'%s--->success

'%image_url)

#處理結束:

print('

worker exit.

')

最簡單的分布式demo

使用springcloud 分別設定兩個埠 得到了資料 如下 如下 沒有較好的教程,遇見一點問題就要卡很久 值得注意的地方 pojo的資料型別是否與虛擬機器中的 型別一致。註解不要忘記。url不要輸入錯了。mysql5.6和5.7不相容 註冊中心高可用demo 右鍵copy乙個eureka,在def...

Zookeeper協調分布式節點demo

多台伺服器和客戶端通過第三方元件zookeeper管理 public class distributedserver catch exception e 向zk集群註冊伺服器資訊 public void registerserver string hostname throws exception ...

python分布式架構 分布式架構

1.分布式架構 採用centos mongodb windows2012 python redis進行分布式架構搭建,mongodb的框架最核心的設計就是 mongodb和mapreduce。mongodb為海量的資料提供了儲存,則mapreduce為海量的資料提供了計算,windows2012作為...