Пример #1
0
 def test_start_50_process(self):
     pr = {}
     count = 0
     statuses_connection = mp.Array('i', [0 for i in range(50)])
     for i in range(50):
         pr[i] = StartProcessOpcForConnectToPLC(
             '192.168.1.1',
             0,
             0,
             0,
             0,
             10,
             values_list=[],
             name_connect="name"+str(i),
             status=statuses_connection,
             count=count
         )
         pr[i].start()
         count+=1
     status = True
     time.sleep(10)
     for p in pr:
         print(pr[p].is_alive())
         if not pr[p].is_alive():
             status = False
         pr[p].kill()
     self.assertEqual(status, True)
Пример #2
0
def main():
    global pr
    global data_for_restart
    while True:
        list_connections = get_list_connections()
        statuses_connection = mp.Array('i', [0 for i in list_connections])
        count = 0
        for connection in list_connections:
            try:
                time.sleep(1)
                pr[connection['name']] = StartProcessOpcForConnectToPLC(
                    connection['ip'],
                    connection['rack'],
                    connection['slot'],
                    connection['DB'],
                    connection['start'],
                    connection['offset'],
                    values_list=connection['value_list'],
                    name_connect=connection['name'],
                    status=statuses_connection,
                    count=count)
                data_for_restart[connection['name']] = {
                    "ip": connection['ip'],
                    "rack": connection['rack'],
                    "slot": connection['slot'],
                    "DB": connection['DB'],
                    "start": connection['start'],
                    "offset": connection['offset'],
                    'values_list': connection['value_list'],
                    'count': count,
                    'name': connection['name']
                }
                count += 1
                pr[connection['name']].start()
            except:
                cprint.err('Not start process %s' % connection['name'])
        # start_socket()
        while True:
            for p in pr:
                restart_process_if_not_alive(p)
                print(pr[p].is_alive(), 'process', p)
            for a in statuses_connection:
                for index, (value1, value2) in enumerate(
                        zip(statuses_connection,
                            ses.query(Connections).order_by(Connections.id))):
                    value2.status = value1
                    ses.commit()
            time.sleep(1)
            if list_connections != get_list_connections():
                for i in pr:
                    pr[i].terminate()
                for i in ses.query(Connections).order_by(Connections.id):
                    i.status = None
                    ses.commit()
                pr = {}
                data_for_restart = {}
                break
Пример #3
0
def restart_process_if_not_alive(p):
    if (not pr[p].is_alive()):
        cprint.err("restart process %s" % p)
        pr[p].terminate()
        pr[p] = StartProcessOpcForConnectToPLC(
            data_for_restart[p]['ip'],
            data_for_restart[p]['rack'],
            data_for_restart[p]['slot'],
            data_for_restart[p]['DB'],
            data_for_restart[p]['start'],
            data_for_restart[p]['offset'],
            values_list=data_for_restart[p]['values_list'],
            name_connect=data_for_restart[p]['name'],
            status=statuses_connection,
            count=data_for_restart[p]['count'])
Пример #4
0
def main():
    count = 0
    for connection in list_connections:
        try:
            time.sleep(3)
            if 'oee' in connection:
                oee = connection['oee']
            else:
                oee = None
            pr[connection['name']] = StartProcessOpcForConnectToPLC(
                connection['ip'],
                connection['rack'],
                connection['slot'],
                connection['DB'],
                connection['start'],
                connection['offset'],
                values_list=connection['value_list'],
                name_connect=connection['name'],
                status=statuses_connection,
                count=count,
                oee=oee)
            data_for_restart[connection['name']] = {
                "ip": connection['ip'],
                "rack": connection['rack'],
                "slot": connection['slot'],
                "DB": connection['DB'],
                "start": connection['start'],
                "offset": connection['offset'],
                'values_list': connection['value_list'],
                'count': count,
                'oee': oee
            }
            count += 1
            pr[connection['name']].start()
        except:
            cprint.err('Not start process %s' % connection['name'])
    start_socket()
    while True:
        for p in pr:
            restart_process_if_not_alive(p)
            print(pr[p].is_alive(), 'process', p)
        for a in statuses_connection:
            print(a)
        time.sleep(1)