小编use*_*197的帖子

ZeroMQ:带有大消息的 REQ/REP

我正在尝试300 MB通过REP-socket发送大消息 ( ) 。
有多个客户端,每个客户端都通过REQ-socket连接到服务器。服务器为每个客户端创建一个专用套接字,等待请求(包含一个标识符)并使用ZMQ_SENDMORE以下两部分发送消息:

  1. 元数据 (~ 1 KB)
  2. 数据 (~ 300 MB)

之后REP-socket 立即关闭。该Context()-instance然后在父线程关闭。ZMQ_LINGER套接字的时间保留为默认值(无限)。有时会发送元数据,但不会发送图像数据。
我跟踪了 ZeroMQ 中的调用,发现内部(windows)套接字在消息数据发送到网络之前已关闭。我认为zmq_term()只要队列中有未发送的消息就会阻塞。
作为一种解决方法,我将客户端更改为在收到数据作为确认后发送另一条请求消息。这很有效,但我不太确定我是否已经解决了根本问题。

ZeroMQ 版本是 4.0.4。我正在使用 C++ 绑定。服务器和客户端都在 Windows(7 和 10)上运行。

c++ sockets zeromq

5
推荐指数
1
解决办法
995
查看次数

如何找出PUB服务器中所有订阅的过滤器?

我有一个PUB服务器。它如何知道订阅了哪些过滤器,以便服务器知道它必须创建哪些数据?一旦没有客户端感兴趣,

服务器就不需要创建数据。SUB

假设可能的过滤器集很大(或无限),但订阅者在任何给定时间都只订阅其中的几个。

示例:假设SUB客户仅订阅纽约和巴黎的几个区号的天气源数据。那么PUB服务器就不必为世界上每个其他城市的每个其他区号创建天气数据,然后再次将其全部丢弃。

如何找出PUB服务器中所有订阅的过滤器?

如果没有简单的方法,我该如何用其他方法解决这个问题?

zeromq

5
推荐指数
1
解决办法
94
查看次数

在iPythonNotebook中中断Flask应用程序会导致ZMQerror

我正试图flask在这样的iPython笔记本中运行一个最简单的应用程序演示.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():.
    return 'Hello World!'

if __name__ == '__main__':
    app.run(d)
Run Code Online (Sandbox Code Playgroud)

我第一次运行它,一切都很好.然后我打断了牢房app.run().但是下次我运行时,笔记本会抛出一些错误信息:

An exception has occurred, use %tb to see the full traceback.

SystemExit: 1
Run Code Online (Sandbox Code Playgroud)

然后我%tb编辑并得到以下回溯:

SystemExit                                Traceback (most recent call last)
<ipython-input-7-a59dfe133898> in <module>()
----> 1 myapp.run(debug=True)

C:\Users\Lewis\AppData\Local\Enthought\Canopy\User\lib\site-packages\flask\app.pyc in run(self, host, port, debug, **options)
    770         options.setdefault('use_debugger', self.debug)
    771         try:
--> 772             run_simple(host, port, self, **options)
    773         finally:
    774             # reset the first request …
Run Code Online (Sandbox Code Playgroud)

zeromq flask pyzmq ipython-notebook

5
推荐指数
1
解决办法
2140
查看次数

ZeroMQ,我们可以使用inproc:transport以及pub/sub消息传递模式

场景:

我们正在ZeroMQ(特别jeroMq)评估事件驱动机制.

应用程序分布在多个服务(发布者和订阅者都是服务)可以存在于同一个jvm或不同节点中,这取决于部署体系结构.

意见

为了玩游戏我使用jero mq 创建了一个pub/ subpattern inproc:作为传输(版本:0.3.5)

  1. 线程发布能够发布(看起来像发布,至少没有错误)
  2. 另一个线程中的订户没有收到任何东西.

使用inproc:连同pub/sub可行吗?

尝试谷歌搜索,但找不到任何具体的,任何见解?

pub/ subwith的代码示例inproc:

使用jero mq(版本:0.3.5)的inproc pub sub的工作代码示例对以后访问此帖子的人有用.一个出版商出版的话题AB,和两个用户接收AB分别

/**
 * @param args
 */
public static void main(String[] args) {

    // The single ZMQ instance
    final Context context = ZMQ.context(1);

    ExecutorService executorService = Executors.newFixedThreadPool(3);
    //Publisher
    executorService.execute(new Runnable() {

        @Override
        public void run() { …
Run Code Online (Sandbox Code Playgroud)

java event-driven-design publish-subscribe zeromq jeromq

5
推荐指数
1
解决办法
1601
查看次数

用不同语言编写的 ZeroMQ 套接字的兼容性

我已经构建了一个基于 python 编写的应用程序ZeroMQ,但现在我面临着性能问题。所以我决定使用 Golang 重写我的应用程序的一些模块。但是当我尝试在不同语言实现的套接字之间建立消息传递时,任何事情都不起作用。

到目前为止,我已经搜索过,但没有找到有关ZeroMQ使用不同语言的兼容性问题的任何信息。

所以问题是:我可以使用golang进行基于ZeroMQpython编写的客户端的服务器实现来连接它吗?
还是我必须只使用一种语言?

编辑:这是我正在尝试正常工作的典型服务器和客户端

服务器:

import zmqctx = zmq.Context()
sock = ctx.socket(zmq.REP)
sock.bind("tcp://*:57000")
msg = sock.recv()
Run Code Online (Sandbox Code Playgroud)

客户:

package main

import (
    zmq "github.com/pebbe/zmq4"
)

func main() {

    ctx, _ := zmq.NewContext()
    sock, _ := ctx.NewSocket(zmq.REQ)

    sock.Connect("tcp://localhost:57000")
    sock.Send("simple message", 0)
}
Run Code Online (Sandbox Code Playgroud)

服务器卡在 sock.recv()

python go zeromq

5
推荐指数
1
解决办法
773
查看次数

如何在同时运行多个cron作业时克服服务器负载问题?

我有一个显示游戏服务器数据的网站.游戏具有不同的"域"(实际上只是单独的服务器),用户可以使用它们.

现在,我cron每隔6小时有不同时间间隔运行14 个工作岗位.运行的所有14个文件几乎相同,每个文件大约需要75分钟(一小时15分钟)才能完成运行.

我曾想过只使用1个文件运行cron并循环遍历每个服务器,但这只会导致一个文件运行18个小时左右.我当前的VPS设置为仅允许1vCPU,所以我正在尝试完成任务并保持在我分配的服务器负载内.

看到该网站需要每6小时更新一次数据,这是不可行的.

我开始研究消息队列并将一些信息传递给将执行相关工作的后台进程.我开始试图使用resquephp-resque,但我的后台工作人员一旦开始就死了.所以,我继续前进ZeroMQ,无论如何,这似乎更符合我的需要.

我通过Composer设置了ZMQ,安装过程中的一切都很顺利.在我的工作脚本(每6小时将由cron调用)中,我得到了:

$dataContext = new ZMQContext();
$dataDispatch = new ZMQSocket($dataContext, ZMQ::SOCKET_PUSH);
$dataDispatch->bind("tcp://*:50557");

$dataDispatch->send(0);

foreach($filesToUse as $filePath){
    $dataDispatch->send($filePath);
    sleep(1);
}

$filesToUse = array();
$blockDirs = array_filter(glob('mapBlocks/*'), 'is_dir');
foreach($blockDirs as $k => $blockDir){
    $files = glob($rootPath.$blockDir.'/*.json');
    $key = array_rand($files);
    $filesToUse[] = $files[$key];
}

$mapContext = new ZMQContext();
$mapDispatch = new ZMQSocket($mapContext, ZMQ::SOCKET_PUSH);
$mapDispatch->bind("tcp://*:50558");

$mapDispatch->send(0);

foreach($filesToUse as $blockPath){
    $mapDispatch->send($blockPath); …
Run Code Online (Sandbox Code Playgroud)

php cron background-process zeromq

5
推荐指数
1
解决办法
1332
查看次数

以交互方式调试并行 python 和 SCOOP

我来自mpi4py交互式调试代码的背景,因此每个不同 CPU 所经历的 python 实例显示在xterm窗口的不同实例中。按照下面链接中的建议,我已经能够使用诸如 的命令来执行我的代码$mpirun -np 4 xterm -e "ipython -i script.py",这是我从以下来源了解到的:debuggingmpi4py交互

以这种方式执行并行 python 代码意味着如果我插入断点 pdb.set_trace(),代码中与每个单个处理器的上下文相关的错误变得非常透明,这种方法极大地促进了猴子修补。

我现在已经从 转移mpi4pySCOOP,我想知道是否有任何类似的方法可以在不同xterm实例中启动对应于不同 CPU 的 python 处理器?切换的原因是因为现在我正在使用一个 python 模块DEAP,该模块旨在与SCOOP.

我也想知道如果WakariIPcluster方法可以结合SCOOP或者mpi4py还有?

Note:我添加了标签,ZeroMQ因为我相信它SCOOP是建立在ZeroMQ.

python debugging zeromq mpi4py

5
推荐指数
0
解决办法
292
查看次数

对于连接到单个服务器的多个客户端,我应该使用哪种双向 ZeroMQ 模式?

我有多个(1000 多个)客户端连接到单个服务器并发送一些日志数据。

服务器分析数据并在必要时做出响应。

PUB/SUB是一个方向(监视器示例)。
REQ/REP无法识别对等方并专门回复对等方(仅用于 ACK 等)。

我需要注册这些客户,识别他们并在分析他们的日志后能够做出回应。

使用套接字,我有客户端套接字,在接受之后我可以使用该套接字进行响应,并且客户端可以在我连接到的同一个套接字上接收。

我在 0mq 的第一周没有在 ZeroMQ 中找到这样的东西。

ROUTER socket 可以打印对等方的 id,但是如何使用该 id 回复该对等方?

有没有更好的方法来处理这个问题?

c sockets zeromq

5
推荐指数
2
解决办法
2283
查看次数

改进bigint写入磁盘性能

我正在使用非常大的bigint数字,我需要将它们写入磁盘并稍后再读取它们,因为它们一次都不适合内存.

当前的Chapel实现首先将其转换bigint为a string,然后将其写入string磁盘[1].这对于大整数来说需要很长时间.

var outputFile = open("outputPath", iomode.cwr);
var writer = outputFile.writer();
writer.write(reallyLargeBigint);
writer.close();
outputFile.close();
Run Code Online (Sandbox Code Playgroud)

有没有办法使用GMP的mpz_out_raw()/ mpz_inp_raw()[2]或mpz_export()/ mpz_import()[3]或其他类似的方式bigint直接将字节转储到磁盘而不事先转换为字符串然后将字节读回到bigint对象?

这也适用于bigint阵列吗?

如果在当前状态下不可能将这些功能添加到Chapel的标准库中,怎么可能?

[1] https://github.com/chapel-lang/chapel/blob/master/modules/standard/BigInteger.chpl#L346

[2] https://gmplib.org/manual/I_002fO-of-Integers.html

[3] https://gmplib.org/manual/Integer-Import-and-Export.html

distributed bigint parallelism-amdahl chapel

5
推荐指数
1
解决办法
200
查看次数

如何将 MetaTrader 与 Node.JS 连接?

我正在构建一个基于 Node.JS 的系统,用于连接 MetaTrader 并处理所有操作,例如链接帐户、打开、关闭交易订单...

但是我仍然没有找到如何在 Nodejs 中连接 MetaTrader 的方法。你能给我一个解决方案或包的例子,可以帮助我做到这一点吗?谢谢!

distributed-system algorithmic-trading node.js metatrader4 metatrader5

5
推荐指数
1
解决办法
4650
查看次数