我想在一台机器上运行一个IPython实例,并从另一个进程(通过LAN)连接到它(运行一些python命令).我知道有可能使用zmq:http://ipython.org/ipython-doc/dev/development/ipythonzmq.html.
但是,我找不到有关如何操作的文档以及是否可能.
任何帮助,将不胜感激!
编辑
我希望能够连接到IPython内核实例并发送它python命令.但是,这不应该通过图形工具(qtconsole)完成,但我希望能够从不同的python脚本中连接到该内核实例...
例如
somehow_connect_to_ipython_kernel_instance
instance.run_command("a=6")
Run Code Online (Sandbox Code Playgroud) redis支持pub-sub
zmq还通过消息代理支持pub-sub
在他们之间进行选择的建筑专业人士是什么?
我的目标是超出应该完成的明显的用例特定性能基准测试(这是一个很好的例子).
假设使用Python等高级语言.
architecture publish-subscribe zeromq design-consideration redis
我有一个使用ZeroMQ进行消息传递的C++应用程序.但它还必须为基于AJAX/Comet的Web服务提供SGCI连接.
为此,我需要一个普通的TCP套接字.我可以通过普通的Posix套接字做到这一点,但是要保持跨平台的便携性并让我的生活更轻松(我希望...)我正在考虑使用Boost :: ASIO.
但现在我有ZMQ的冲突想要使用它自己zmq_poll()和ASIO它io_service.run()...
有没有办法让ASIO与0MQ一起工作zmq_poll()?
或者是否有其他推荐的方法来实现这样的设置?
注:我可以解决,通过使用多线程 - 但它是将与SCGI交通非常低量运行该程序只有一点点的单核/ CPU中,所以多线程是一种资源的浪费?
我对这些高级并发范例很陌生,我已经开始使用scala RX绑定了.所以我试图理解RX与RabbitMQ或ZeroMQ等消息队列的区别?
他们似乎都使用订阅/发布范例.在某个地方,我看到一条关于RX在RabbitMQ上运行的推文.
有人可以解释RX和消息队列之间的差异吗?为什么我会选择一个而不是另一个?可以用一个替代另一个,还是互相排斥?它们在哪些区域重叠?
最近开始研究这些AMQP(RabbitMQ,ActiveMQ)和ZeroMQ技术,对分布式系统/计算感兴趣.一直在谷歌搜索和StackOverflow'周围,找不到两者之间的明确比较.
我得到的最远的是两者不太可比,但我想知道差异.在我看来ZeroMQ更加分散(没有消息经纪人在播放中间人处理消息/ guarenteering交付)并且因此更快,但并不意味着是一个完全成熟的系统,而是需要以编程方式处理的事情,比如演员.
另一方面,AMQP似乎是一个更完善的系统,中央消息代理确保可靠的交付,但由于这一点,比ZeroMQ慢.但是,中央经纪人会造成单点故障.
也许比喻是客户/服务器与P2P?
我的发现是真的吗?另外,使用一个优于另一个的优点,缺点或用例是什么?比较使用*MQ与像Akka Actors这样的东西也会很好.
编辑多看了一下.. ZeroMQ似乎是AMQP的新竞争者,似乎要快得多,唯一的问题是采用/实现?
我正在尝试通过IPC实现PUB/SUB.如果我改变了下面的代码,以便用户结合"TCP://*:5000"和出版商连接到"TCP://本地主机:5000"它的工作原理,但我不能让它工作在IPC.我究竟做错了什么?
subscriber.py
import zmq, json
def main():
context = zmq.Context()
subscriber = context.socket(zmq.SUB)
subscriber.bind("ipc://test")
subscriber.setsockopt(zmq.SUBSCRIBE, '')
while True:
print subscriber.recv()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
publisher.py
import zmq, json, time
def main():
context = zmq.Context()
publisher = context.socket(zmq.PUB)
publisher.connect("ipc://test")
while True:
publisher.send( "hello world" )
time.sleep( 1 )
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud) 我本周开始使用ZeroMQ,当使用请求 - 响应模式时,我不确定如何让工作人员安全地"挂断"并关闭他的套接字而不可能丢弃消息并导致发送该消息的客户永远不会得到响应.想象一下用Python编写的工人看起来像这样:
import zmq
c = zmq.Context()
s = c.socket(zmq.REP)
s.connect('tcp://127.0.0.1:9999')
while i in range(8):
s.recv()
s.send('reply')
s.close()
Run Code Online (Sandbox Code Playgroud)
我一直在做实验,并且发现一个127.0.0.1:9999套接字类型的客户zmq.REQ做出一个公平排队的请求可能会让公司排队算法在工人完成最后一次工作之后send()但在工作之前就选择上面的工作人员.以下close()方法.在这种情况下,似乎请求由工作进程中的ØMQ堆栈接收和缓冲,并且当close()抛出与套接字关联的所有内容时请求将丢失.
工人如何"安全"分离 - 有没有办法发出"我不再需要消息"的信号,然后(a)循环传输信号期间到达的任何最终消息,(b)生成他们的回复,然后(c)执行close()保证不丢弃任何消息?
编辑:我想我想要输入的原始状态是"半封闭"状态,没有进一步的请求可以接收 - 并且发送者会知道 - 但返回路径仍然打开,以便我可以检查我的传入缓冲区是一个最后到达的消息,如果有一个坐在缓冲区中则响应它.
编辑:在回答一个好问题时,更正了描述以使等待消息的数量为多个,因为可能有许多连接在等待回复.
假设有几台机器使用python'szeroMQ客户端进行交互.
这些消息自然地格式化为字符串.
消息的长度是否有限制(字符串)?
大家好,我试图按照以下位置的说明进行操作:https://github.com/nathanmarz/storm/wiki/Installing-native-dependencies,用于在Ubuntu 12.04计算机上安装Zero MQ作为Storm的依赖项.但是,当尝试运行make命令时,我收到以下错误
Making all in src
make[1]: Entering directory `/home/localadmin/jzmq/src'
make[1]: *** No rule to make target `classdist_noinst.stamp', needed by `org/zeromq/ZMQ.class'. Stop.
make[1]: Leaving directory `/home/localadmin/jzmq/src'
make: *** [all-recursive] Error 1
Run Code Online (Sandbox Code Playgroud)
有没有人知道这个错误源于何处以及我如何能够纠正它?
我正在调查zeromq作为java项目中的消息传递解决方案,但我发现有关java绑定的说明有点难以理解. http://www.zeromq.org/bindings:java
我不熟悉java绑定,所以这些可能是愚蠢的问题,但有人可以帮助我理解:
我觉得zeromq上提供的说明需要熟悉构建我缺乏的C项目,所以也许我只是在密集,但这似乎很多工作.