2016-04-09 8 views
0

OK, поэтому я хочу использовать crossbar.io и создать приложение на python.Импорт pycurl в ошибки crossbar.io

Я могу заставить демо работать, однако моему приложению нужно будет открутить потоки, которые используют pycurl для прослушивания долгоживущих http-подключений.

отдельно, код crossbar.io и работа pycurl кода, однако, когда я делаю следующее, я получаю «импорт не найден»:

import sys 
from twisted.internet.defer import inlineCallbacks 
from twisted.logger import Logger 

from autobahn.twisted.util import sleep 
from autobahn.twisted.wamp import ApplicationSession 
from autobahn.wamp.exception import ApplicationError 

from legacy_misc import Legacy_Listener 

client = Legacy_Listener("box01") 
client.daemon = True 
client.start() 

class AppSession(ApplicationSession): 

log = Logger() 
@inlineCallbacks 
def onJoin(self, details): 

    # SUBSCRIBE to a topic and receive events 
    # 
    def onhello(msg): 
     self.log.info("event for 'onhello' received: {msg}", msg=msg) 

    yield self.subscribe(onhello, 'com.example.onhello') 
    self.log.info("subscribed to topic 'onhello'") 

    # REGISTER a procedure for remote calling 
    # 
    def add2(x, y): 
     self.log.info("add2() called with {x} and {y}", x=x, y=y) 
     return x + y 

    yield self.register(add2, 'com.example.add2') 
    self.log.info("procedure add2() registered") 

    # PUBLISH and CALL every second .. forever 
    # 
    counter = 0 
    while True: 

     # PUBLISH an event 
     # 
     yield self.publish('com.example.oncounter', counter) 
     self.log.info("published to 'oncounter' with counter {counter}", 
         counter=counter) 
     counter += 1 

     if counter > 5: 
      break 

     # CALL a remote procedure 
     # 
     try: 
      res = yield self.call('com.example.mul2', counter, 3) 
      self.log.info("mult() called with result: {result}", 
          result=res) 
     except ApplicationError as e: 
      # ignore errors due to the frontend not yet having 
      # registered the procedure we would like to call 
      if e.error != 'wamp.error.no_such_procedure': 
       raise e 

     yield sleep(1) 

legacy_Listener содержит код резьбы с «импортом pycurl» (этот модуль прекрасно работает сам по себе)

Теперь, как только я смешать crossbar.io пример кода с моим собственным кодом, я получаю следующее сообщение об ошибке:

2016-04-09T20:42:09+0100 [Container 26333] Worker process starting (PyPy-EPollReactor) .. 

2016-04-09 T20: 42: 13 + 0100 [Контроллер 26219] Контейнер с идентификатором 'worker2' и PID 26333 запущен 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333] Ошибка загрузки компонента Traceback (последний последний звонок): Файл «/opt/crossbar/site-packages/autobahn/wamp/websocket.py», строка 90, in onMessage self._session.onMessage (msg) Файл «/ opt/crossbar/site-packages/autobahn/wamp/protocol.py ", строка 809, inMessage on_reply = txaio.as_future (endpoint.fn, * invoke_args, ** invoke_kwargs) Файл« /opt/crossbar/site-packages/txaio/tx.py », строка 339, in as_future return maybeDeferred (fun, * args, ** kwargs) Файл «/opt/crossbar/site-packages/twisted/internet/defer.py», строка 150, в файле Возможные значения result = f (* args , ** kw) --- --- Файл «/opt/crossbar/site-packages/crossbar/worker/container.py», строка 192, в start_container_component create_component = _appsession_loader (config) Файл «/ opt/crossbar/site-packages/crossbar/worker/init .py ", строка 74, в _appsession_loader pythonpath = sys.path autobahn.wamp.exception.ApplicationError: ApplicationError (error =, args = ['Не удалось импортировать class \ 'hello.AppSession \' \ nTraceback (последний последний вызов): \ n Файл "/opt/crossbar/site-packages/autobahn/wamp/protocol.py", строка 809, в onMessage \ n on_reply = txaio. as_future (endpoint.fn, * invoke_args, ** invoke_kwargs) \ n Файл "/opt/crossbar/site-packages/txaio/tx.py", строка 339, в as_future \ n return maybeDeferred (fun, * args, ** kwargs) \ n Файл "/ opt/crossbar/site-packages /twisted/internet/defer.py ", строка 150, в файле Maybedeferred \ n result = f (* args, ** kw) \ n Файл" /opt/crossbar/site-packages/crossbar/worker/container.py ", строка 192, в start_container_component \ n create_component = _appsession_loader (config) \ n --- --- \ n Файл "/ opt/crossbar/site-packages/crossbar/worker/init .py", строка 58, в _appsession_loader \ n module = importlib.import_module (имя_модуля) \ n Файл "/opt/crossbar/lib-python/2.7/importlib/ init .py", строка 37, в import_module \ n import (name) \ n Файл "/home/osboxes/qbtwebmon/hello.py", строка 36, в \ n из импорта legacy_misc Legacy_Listener \ nexceptions.ImportError: нет модуля с именем legacy_misc \ n '], kwargs = {' pythonpath ': [u'/home/'/ opt/crossbar/bin', '/ opt/crossbar/lib_pypy/расширений ','/opt/crossbar/lib_pypy ',' /opt/crossbar/lib-python/2.7 ',' /opt/crossbar/lib-python/2.7/lib-tk ','/opt/crossbar/lib-python/2.7/plat-linux2 ','/opt/crossbar/site-packages ','/home/osboxes/qbtwebmon/wamp_venv/lib/python2.7/site-packages ']}, enc_algo = Нет)

2016-04-09T20: 42: 13 + 0100 [Container 26333] Пути поиска модуля Python: 2016-04-09T20: 42: 13 + 0100 [ Контейнер 26333]/home/osboxes/qbtwebmon 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333]/opt/crossbar/site-packages/crossbar/worker 2016-04-09T20: 42: 13 + 0100 [ Контейнер 26333]/opt/crossbar/bin 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333]/opt/crossbar/lib_pypy/Расширения 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333 ]/opt/crossbar/lib_pypy 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333] /opt/crossbar/lib-python/2.7 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333]/опт/кр ossbar/lib-python/2.7/lib-tk 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333] /opt/crossbar/lib-python/2.7/plat-linux2 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333]/opt/crossbar/site-packages 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333] /home/osboxes/qbtwebmon/wamp_venv/lib/python2.7/site-packages 2016-04-09T20: 42: 13 + 0100 [Контейнер 26333] NativeWorkerSession.onUserError 2016-04-09T20: 42: 13 + 0100 [Контроллер 26219] crossbar.error.class_import_failed: Не удалось импортировать класс 'hello.AppSession' Traceback (последний последний вызов): Файл «/opt/crossbar/site-packages/autobahn/wamp/protocol.py», строка 809, in onMessage on_reply = txaio.as_future (endpoint.fn, * invoke_args, ** invoke_kwargs) Файл «/ opt/crossbar/site-packag es/txaio/tx.py ", строка 339, as_future return maybeDeferred (fun, * args, ** kwargs) Файл« /opt/crossbar/site-packages/twisted/internet/defer.py », строка 150 в maybeDeferred результат = F (* арг, ** кВт) Файл "/opt/crossbar/site-packages/crossbar/worker/container.py", строка 192, в start_container_component create_component = _appsession_loader (конфигурации) - - --- Файл "/ OPT/ригель/сайт-пакеты/перекладина/рабочий/INIT .py", строка 58, в _appsession_loader модуль = importlib.import_module (module_name) Файл «/ Opt/перекладина/lib-python/2.7/importlib/init .py ", строка 37, в import_module импорт (имя) Файл "/home/osboxes/qbtwebmon/hello.py", строка 36, в из legacy_misc импорта Legacy_Listener exceptions.ImportError: Нет модуль с именем legacy_misc

2016-04-09T20: 42: 13 + 0100 [контроллер 26219] отправка TERM подпроцесс 26272 2016-04-09T20: 42: 13 + 0100 [контроллер 26219] ждет 26272, чтобы выйти ...

Теперь после нескольких часов прибегая к помощи, у меня есть понял, что pycurl не работает в pypy, это то, что работает crossbar.io, но мне было интересно, есть ли способ сказать «использовать pypy» для запуска перекладины и «использовать cpython» для запуска проекта?

, наконец, это не проблема пути, я добавил ее и протестировал ее для этого.

ответ

0

OK исправленный, в основном я использовал метод «yum install crossbar» для установки, который написан на pypy. Если вы устанавливаете через pip, вы получаете версию CPython, которая также быстрее, чем версия pypy IMHO.

Примечание: переходная панель для установки перемычки [все] - это боль, вы исправляете одну проблему с компиляцией, а затем другую, просто установите вместо этого стандартную перекладину.