好,所以我想使用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年4月9日T20:42:13 + 0100 [控制器26219] ID为'worker2'且PID为26333的容器启动 2016-04-09T20:42:13 + 0100 [容器26333]组件加载失败 回溯(最近一次调用最后一次): 文件“/opt/crossbar/site-packages/autobahn/wamp/websocket.py”,第90行,onMessage self._session.onMessage(msg) 文件“/ opt/crossbar/site-packages/autobahn/wamp/on_primary = txaio.as_future(endpoint.fn,* invoke_args,** invoke_kwargs) 文件“/opt/crossbar/site-packages/txaio/tx.py”,行339,第809行,onMessage on_reply = as_future return maybeDeferred(fun,* args,** kwargs) 文件“/opt/crossbar/site-packages/twisted/internet/defer.py”,第150行,位于maybeDeferred 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在onMessage \ n on_reply = txaio文件“/opt/crossbar/site-packages/autobahn/wamp/protocol.py”,第809行。 as_future(endpoint.fn,* invoke_args,** invoke_kwargs)\ n在as_future文件“/opt/crossbar/site-packages/txaio/tx.py”,第339行,返回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”,line 58,in _appsession_loader \ n模块= importlib.import_module(module_name)\ n文件“/opt/crossbar/lib-python/2.7/importlib/ init .py”,第37行,in import_module \ n import(name)\ n File “/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 = None)
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 [Container 26333]/opt/crossbar/lib_pypy/extensions 2016-04-09T20:42:13 + 0100 [Container 26333 ]/opt/crossbar/lib_pypy 2016-04-09T20:42:13 + 0100 [Container 26333] /opt/crossbar/lib-python/2.7 2016-04-09T20:42:13 + 0100 [Container 26333] /选择/ CR ossbar/lib-python/2.7/lib -tk 2016-04-09T20:42:13 + 0100 [Container 26333] /opt/crossbar/lib-python/2.7/plat-linux2 2016-04-09T20:42: 13 + 0100 [Container 26333]/opt/crossbar/site-packages 2016-04-09T20:42:13 + 0100 [Container 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行,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行,inDeferred result = f(* args,** kw) start_container_component中的文件“/opt/crossbar/site-packages/crossbar/worker/container.py”,第192行 create_component = _appsession_loader(config) - - --- 文件“/ opt/crossbar/site-packages/crossbar/worker/init .py”,line 58,in _appsession_loader module = importlib.import_module(module_name) File“/ opt/crossbar/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”来运行该项目?
最后,这不是一个路径问题,我已附加并测试它。