Ejemplo n.º 1
0
                    return
                output.store_data(data)
            else:
                time.sleep(0.1)


if __name__ == '__main__':
    ##初始队列
    url_queue = Queue()
    result_queue = Queue()
    store_queue = Queue()
    conn_queue = Queue()

    ##创建分布式管理器
    node = NodeManager()
    manager = node.start_Manger(url_queue, result_queue)

    ##创建Url管理进程,数据提取进程和数据存储进程
    url_manager_proc = Process(target=node.url_manager_proc,
                               args=(url_queue, conn_queue,
                                     'http://baike.baidu.com/view/284853.htm'))
    result_solve_proc = Process(target=node.result_solve_proc,
                                args=(result_queue, conn_queue, store_queue))
    store_queue = Process(target=node.store_proc, args=(store_queue, ))

    ##启动3个进程和分布式管理器
    url_manager_proc.start()
    result_solve_proc.start()
    store_queue.start()
    manager.get_server().serve_forever()
#接收任务的队列
receive_queue = queue.Queue()

#从BaseManager继承的QueueManager
class QueueManager(BaseManager):
    pass

#把两个Queue都注册到网络上,callable参数关联了Queue对象
QueueManager.register('get_task_queue', callable=lambda : task_queue)
QueueManager.register('get_receive_queue', callable=lambda : receive_queue)

#绑定端口5000,验证码是"abc"
manager = Queue(address=('', 5000), authkey=b'abc')

#启动Queue
manager.start()

#获取通过网络访问的Queue对象
task = manager.get_task_queue()
receive = manager.get_receive_queue()

#放几个任务进去
for i in range(10):
    n = random.randint(0, 10000)
    print('Put task %d...' % n)
    task.put(n)

#从receive队列读取结果
print('Try get receive...')
for i in range(10):
    r = receive.get(timeout=10)
Ejemplo n.º 3
0
def netService(a, cmd):
    while True:
        data = listen()
        print(data[1].decode("utf-8")[0])
        if data[1].decode("utf-8")[0] == 'd':
            dry = ['Not dry', 'Dry', 'Too dry']
            send('{"Temperature":%d,"Humidity":%d,"Dry Status":"%s","Light":%d}' % (a[0], a[1], dry[a[2]], a[3]), data)
        else:
            send("a", data)


def add(l, cmd):
    for i in range(4):
        l.append(i)



if __name__ == "__main__":
    q = Queue()
    m = Manager()
    cmd='1'
    l = m.list()
    p = Process(target=netService, args=(l, cmd))
    q = Process(target=add, args=(l, cmd))
    p.start()
    q.start()
    p.join()
    q.join()