SyntaxError: if res instanceof AsynchronousException: - PullRequest
0 голосов
/ 28 декабря 2018

Я использую пакет для доступа к системе автоматизации здания через API отдыха с именем pyhaystack , (ссылка на readthedocs), и я получаю некоторую помощь по использованию Tornado IO для создания некоторого асинхронного кода.В конечном итоге у меня возникают проблемы с взаимоблокировкой API, и я надеюсь, что Tornado IO может помочь, иначе asyncio

В любом случае, кто-то может дать мне совет, чтобы устранить эту синтаксическую ошибку? File "<ipython-input-3-62580fca3488>", line 51 if res instanceof AsynchronousException: ^ SyntaxError: invalid syntax

Это полная версия непроверенного скрипта ниже, синтаксическая ошибка в if __name__ == '__main__':

from tornado.ioloop import IOLoop
import time
import traceback
import numpy as np
from pyhaystack.client.niagara import Niagara4HaystackSession
from pyhaystack.util.asyncexc import AsynchronousException
import threading

class HaystackThread(object):
    def __init__(self):
        # Create just one session object, used by the thread
        self._client = session = Niagara4HaystackSession(uri='http://10.30.1.27', username='bb', password='Marley123!', pint=True, http_args=dict(debug=True))
        self._io_loop = IOLoop()
        self._thread = None

    def start(self):
        # Create a thread and start the IOLoop within it
        self._thread = threading.Thread(target=self._io_loop.start)

    def stop(self):
        # Stop the IOLoop first by issuing the stop command within the IOLoop thread
        # then waiting for the thread to exit.
        def _stop():
            self._io_loop.stop()
            self._thread = None
        self._io_loop.add_callback(_stop)
        self._thread.join()

    def getState(self, callback):
        def _on_result(operation, **kwargs):
            try:
                callback(operation.result.tags['curVal'])
            except:
                callback(AsynchronousException())
        def _get_state():
            self._client.find_entity(filter_expr='dat2', single=True, callback=_on_result)
        self._io_loop.add_callback(_get_state)


if __name__ == '__main__':
    # Create a thread instance and start it.
    thread = HaystackThread()
    thread.start()

    # Fire off some requests
    waiting = set()
    for n in range(0, 8):
        waiting.add(n)
        def _on_response(res):
            try:
                if res instanceof AsynchronousException:
                    # This is an error
                    res.reraise()
                else:
                    # This is our sensor value
                    print(res)
            except:
                traceback.print_exc()
            finally:
                waiting.discard(n)
        thread.getState(_on_response)

    while waiting:
        time.sleep(1)

    thread.stop()

1 Ответ

0 голосов
/ 03 января 2019

это работает if type(res) == AsynchronousException::

    def _on_response(res):
        try:
            if type(res) == AsynchronousException:
                # This is an error
                # res isinstance AsynchronousException:
                res.reraise()
            else:
                # This is our sensor value
                print(res)
        except:
            traceback.print_exc()
        finally:
            waiting.discard(n)
...