Python сделана попытка выполнить операцию

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

read_raw_history(). OSError: [WinError 10038] #1015

read_raw_history(). OSError: [WinError 10038] #1015

Comments

Good evening, I tried to create an example opc ua client for reading historical data. Received the following error. Please tell me where I made a mistake?

from opcua import Client import os
client=Client("opc.tcp://YOKOGAWA:YOKOGAWA@apc0466:34430") client.set_security_string("Basic256,SignAndEncrypt,certificate-example.der,private-key-example.pem") client.application_uri='urn:example.org:FreeOpcUa:python-opcua'
DEPRECATED! Do not use SecurityPolicyBasic256 anymore! 
try: client.connect() tag1 = client.get_node("ns=4;s=Root/Objects/APC/Applications/CDU_App/Live/Variables/AI133C.PV/MeasuredValueValidated") print("tag1 is: [] with value ".format(tag1, tag1.get_value(), tag1.get_description())) finally: client.disconnect() result=tag1.read_raw_history(starttime=datetime(2017,5,4,13,44,30), endtime=datetime(2017,5,4,16,59,30), numvalues=10)
tag1 is: Node(StringNodeId(ns=4;s=Root/Objects/APC/Applications/CDU_App/Live/Variables/AI133C.PV/MeasuredValueValidated)) [LocalizedText(Encoding:0, Locale:None, Text:None)] with value nan --------------------------------------------------------------------------- OSError Traceback (most recent call last) in 5 finally: 6 client.disconnect() ----> 7 result=tag1.read_raw_history(starttime=datetime(2017,5,4,13,44,30), endtime=datetime(2017,5,4,16,59,30), numvalues=10) c:\users\lofa\appdata\local\programs\python\python37\lib\site-packages\opcua\common\node.py in read_raw_history(self, starttime, endtime, numvalues) 506 details.NumValuesPerNode = numvalues 507 details.ReturnBounds = True --> 508 result = self.history_read(details) 509 return result.HistoryData.DataValues 510 c:\users\lofa\appdata\local\programs\python\python37\lib\site-packages\opcua\common\node.py in history_read(self, details) 523 params.ReleaseContinuationPoints = False 524 params.NodesToRead.append(valueid) --> 525 result = self.server.history_read(params)[0] 526 return result 527 c:\users\lofa\appdata\local\programs\python\python37\lib\site-packages\opcua\client\ua_client.py in history_read(self, params) 600 request = ua.HistoryReadRequest() 601 request.Parameters = params --> 602 data = self._uasocket.send_request(request) 603 response = struct_from_binary(ua.HistoryReadResponse, data) 604 self.logger.debug(response) c:\users\lofa\appdata\local\programs\python\python37\lib\site-packages\opcua\client\ua_client.py in send_request(self, request, callback, timeout, message_type) 79 returns response object if no callback is provided 80 """ ---> 81 future = self._send_request(request, callback, timeout, message_type) 82 if not callback: 83 data = future.result(self.timeout) c:\users\lofa\appdata\local\programs\python\python37\lib\site-packages\opcua\client\ua_client.py in _send_request(self, request, callback, timeout, message_type) 70 71 msg = self._connection.message_to_binary(binreq, message_type=message_type, request_id=self._request_id) ---> 72 self._socket.write(msg) 73 return future 74 c:\users\lofa\appdata\local\programs\python\python37\lib\site-packages\opcua\common\utils.py in write(self, data) 116 117 def write(self, data): --> 118 self.socket.sendall(data) 119 120 OSError: [WinError 10038] Сделана попытка выполнить операцию на объекте, не являющемся сокетом 

The text was updated successfully, but these errors were encountered:

Читайте также:  Java клиент серверное приложение многопоточное

Источник

Исключения в python. Конструкция try — except для обработки исключений

Python 3 логотип

Исключения (exceptions) — ещё один тип данных в python. Исключения необходимы для того, чтобы сообщать программисту об ошибках.

Самый простейший пример исключения — деление на ноль:

Разберём это сообщение подробнее: интерпретатор нам сообщает о том, что он поймал исключение и напечатал информацию (Traceback (most recent call last)).

Далее имя файла (File «»). Имя пустое, потому что мы находимся в интерактивном режиме, строка в файле (line 1);

Выражение, в котором произошла ошибка (100 / 0).

Название исключения (ZeroDivisionError) и краткое описание исключения (division by zero).

Разумеется, возможны и другие исключения:

В этих двух примерах генерируются исключения TypeError и ValueError соответственно. Подсказки дают нам полную информацию о том, где порождено исключение, и с чем оно связано.

Рассмотрим иерархию встроенных в python исключений, хотя иногда вам могут встретиться и другие, так как программисты могут создавать собственные исключения. Данный список актуален для python 3.3, в более ранних версиях есть незначительные изменения.

  • BaseException — базовое исключение, от которого берут начало все остальные.
    • SystemExit — исключение, порождаемое функцией sys.exit при выходе из программы.
    • KeyboardInterrupt — порождается при прерывании программы пользователем (обычно сочетанием клавиш Ctrl+C).
    • GeneratorExit — порождается при вызове метода close объекта generator.
    • Exception — а вот тут уже заканчиваются полностью системные исключения (которые лучше не трогать) и начинаются обыкновенные, с которыми можно работать.
      • StopIteration — порождается встроенной функцией next, если в итераторе больше нет элементов.
      • ArithmeticError — арифметическая ошибка.
        • FloatingPointError — порождается при неудачном выполнении операции с плавающей запятой. На практике встречается нечасто.
        • OverflowError — возникает, когда результат арифметической операции слишком велик для представления. Не появляется при обычной работе с целыми числами (так как python поддерживает длинные числа), но может возникать в некоторых других случаях.
        • ZeroDivisionError — деление на ноль.
        • IndexError — индекс не входит в диапазон элементов.
        • KeyError — несуществующий ключ (в словаре, множестве или другом объекте).
        • UnboundLocalError — сделана ссылка на локальную переменную в функции, но переменная не определена ранее.
        • BlockingIOError
        • ChildProcessError — неудача при операции с дочерним процессом.
        • ConnectionError — базовый класс для исключений, связанных с подключениями.
          • BrokenPipeError
          • ConnectionAbortedError
          • ConnectionRefusedError
          • ConnectionResetError
          • IndentationError — неправильные отступы.
            • TabError — смешивание в отступах табуляции и пробелов.
            • UnicodeEncodeError — исключение, связанное с кодированием unicode.
            • UnicodeDecodeError — исключение, связанное с декодированием unicode.
            • UnicodeTranslateError — исключение, связанное с переводом unicode.

            Теперь, зная, когда и при каких обстоятельствах могут возникнуть исключения, мы можем их обрабатывать. Для обработки исключений используется конструкция try — except.

            Первый пример применения этой конструкции:

              
            
              
            

            Ещё две инструкции, относящиеся к нашей проблеме, это finally и else. Finally выполняет блок инструкций в любом случае, было ли исключение, или нет (применима, когда нужно непременно что-то сделать, к примеру, закрыть файл). Инструкция else выполняется в том случае, если исключения не было.

            Для вставки кода на Python в комментарий заключайте его в теги

            Источник

            Python-сообщество

            [RSS Feed]

            • Начало
            • » Python для новичков
            • » Ошибка при работе с элементарным потоком

            #1 Май 12, 2011 08:40:01

            Ошибка при работе с элементарным потоком

            Всем доброго дня! Уважаемые знатоки, подскажите пожалуйста, из-за чего возникает ошибка:
            Exception in thread Thread-1:
            Traceback (most recent call last):
            File “c:\Python32\lib\threading.py”, line 736, in _bootstrap_inner
            self.run()
            File “C:\Users\maksimys\Documents\NetBeansProjects\client1\src\client1.py”, line 26, in run
            self._connector.send (bytes(sendData,'utf-8'))
            socket.error: Сделана попытка выполнить операцию на объекте, не являющемся сокетом

            При попытке запустить работу клиентского кода:

            import socket, string
            import threading

            debug = True

            _connector = None
            _running = True

            _host = '127.0.0.1'
            _port = 12345
            _recvBuffer = 2000

            _connector = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
            _connector.connect ((str(_host), int(_port)))

            class MyThread1 (threading.Thread):
            def __init__(self, _connector):
            self._connector = _connector
            threading.Thread.__init__(self)

            def run (self):
            while 1:
            sendData = input ("> ")
            self._connector.send (bytes(sendData,'utf-8'))

            MyThread1(_connector).start()
            _connector.close ()

            #2 Май 12, 2011 09:03:07

            Ошибка при работе с элементарным потоком

            Ты же делаешь _connector.close () сразу.

            #3 Май 12, 2011 12:35:43

            Ошибка при работе с элементарным потоком

            И правда помогло, спасибо agalen.
            Странно одно, что ошибка была на другую строку…

            #4 Май 12, 2011 16:29:54

            Ошибка при работе с элементарным потоком

            Попробовал перенести консольное приложение в GUI, появилась ошибка:
            Exception in thread Thread-1:
            Traceback (most recent call last):
            File “c:\Python32\lib\threading.py”, line 736, in _bootstrap_inner
            self.run()
            File “C:\Users\maksimys\Documents\NetBeansProjects\GUI_CLIENT\src\gui_client.py”, line 15, in run
            recvData = self._connector.recv (_recvBuffer)
            socket.error: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied

            Из-за малого опыта программирования python и работы с сокетами не получается определить из-за чего возникает ошибка. Помогите пожалуйста 🙂

            import datetime
            import socket
            import threading

            from tkinter import *

            _recvBuffer = 2000

            class MyThread2 (threading.Thread):
            def __init__(self, sock):
            self._connector = sock
            threading.Thread.__init__(self)
            def run (self):
            while 1:
            recvData = self._connector.recv (_recvBuffer)
            obj.history.insert(END, " "+ str(hour) + ":" + str(minutes) + ":" + str(sec)+": "+str(recvData,encoding="utf-8")+"\n")

            class MyThread1 (threading.Thread):
            def run(self):
            obj.but_send.bind("", sendMessage)
            obj.but_exit.bind("", exit)
            obj.but_reg.bind("", reg)

            class Main:
            def __init__(self):
            self.but_reg = Button(root)
            self.but_reg["text"] = "Client register!"
            self.lab_nic = Label(root, text="NIC-name:", font="Arial 11")
            #self.lab_ip = Label(root, text="Client IP-address:", font="Arial 11")
            self.lab_ip_srv = Label(root, text="Server IP-address:", font="Arial 11")
            self.ent_nic = Entry(root, width = 20, bd = 3)
            #self.ent_ip = Entry(root, width = 20, bd = 3)
            ip_add = StringVar()
            ip_add.set("127.0.0.1")
            self.ent_ip_srv = Entry(root, textvariable = ip_add, width = 20, bd = 3)

            self.but_send = Button(root)
            self.but_send['text'] = "Send Message!"
            self.but_send['state'] = 'disabled'
            self.history = Text(root,width=30,height=10, font="Verdana 12")
            self.message = Entry(root, width = 50, bd = 3)
            self.but_exit = Button(root)
            self.but_exit['text'] = "Close&Exit"

            self.lab_nic.grid(row=0,column=0, padx = 20, sticky = "nw")
            self.ent_nic.grid(row=1,column=0, padx = 20, sticky = "nw")

            #self.lab_ip.grid(row=2,column=0, padx = 20, sticky = "nw")
            #self.ent_ip.grid(row=3,column=0, padx = 20, sticky = "nw")

            self.lab_ip_srv.grid(row=0,column=0, padx = 20, sticky = "se")
            self.ent_ip_srv.grid(row=1,column=0, padx = 20, sticky = "se")
            self.but_reg.grid(row=3,column = 2, pady = 15, padx = 10)

            self.history. grid(row = 4, column = 0, padx = 20,columnspan = 2)
            self.message.grid(row=5,column =0, padx = 20, pady = 10)
            self.but_send.grid(row = 6, column = 0, padx = 20, pady = 10, sticky = "se")

            self.but_exit.grid(row = 6, column = 2, padx = 20, pady = 10)


            def func(event):
            now = datetime.datetime.now()
            year, month, day, hour, minutes, sec, wday, yday, isdst = now.timetuple()
            obj.history.insert(END, obj.ent_nic.get()+ " "+ str(hour) + ":" + str(minutes) + ":" + str(sec)+": "+obj.message.get()+"\n" )


            def exit(event):
            root.destroy()
            sock.close()


            def reg(event):
            obj.but_send['state'] = 'active'
            HOST = obj.ent_ip_srv.get()
            PORT = 12345
            sock.connect((HOST, PORT))


            def sendMessage(event):
            sock.send(bytes(obj.message.get(),"utf-8"))
            #result = sock.recv(1024)
            #history.insert(result)


            root = Tk()
            root.title("Client")
            obj = Main()
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

            MyThread2(sock).start()
            MyThread1().start()

            root.mainloop()

            Источник

Оцените статью