标签: worker

Heroku worker dyno上的进程之间的TCP Socket通信

我想知道如何在Heroku工作者dyno上的进程之间进行通信.

我们希望Resque工作者读取队列并将数据发送到在同一个dyno上运行的另一个进程."其他进程"是一种现成的软件,通常使用TCP套接字(端口xyz)来监听命令.它设置为在Resque工作程序启动之前作为后台进程运行.

但是,当我们尝试本地连接到该TCP套接字时,我们无处可去.

我们设置队列的Rake任务执行此操作:

task "resque:setup" do
  # First launch our listener process in the background
  `./some_process_that_listens_on_port_12345 &`

  # Now get our queue worker ready, set up Redis backing store
  port = 12345
  ENV['QUEUE'] = '*'  
  ENV['PORT'] = port.to_s
  Resque.redis = ENV['REDISTOGO_URL']

  # Start working from the queue
  WorkerClass.enqueue
end
Run Code Online (Sandbox Code Playgroud)

这样做 - 我们的侦听器进程运行,Resque尝试处理排队的任务.但是,Resque作业失败,因为它们无法连接localhost:12345(具体而言Errno::ECONNREFUSED).

可能,Heroku在同一个dyno上阻止TCP套接字通信.有没有解决的办法?

我尝试从情境中取出"代码"并在命令行上执行(在服务器进程声称它已正确绑定到12345之后):

nc localhost 12345 -w 1 </dev/null
Run Code Online (Sandbox Code Playgroud)

但这也没有联系.

我们目前正在调查更改客户端/服务器代码以便UNIXSocket在两侧使用而不是TCPSocket,但由于它是一个现成的软件,我们宁愿避免使用我们自己的分支.

ruby sockets tcp heroku worker

10
推荐指数
2
解决办法
3039
查看次数

Spark CollectAsMap

我想知道collectAsMap在Spark中是如何工作的.更具体地说,我想知道所有分区的数据聚合将在何处发生?聚合发生在主人或工人中.在第一种情况下,每个工作人员在master上发送数据,当master从每个worker收集数据时,master将汇总结果.在第二种情况下,工人负责汇总结果(在他们之间交换数据之后),之后结果将被发送给主人.

我必须找到一种方法,以便主人能够分别从每个分区收集数据,而无需工人交换数据.

distributed-computing worker apache-spark

10
推荐指数
1
解决办法
1万
查看次数

如何让我的Rails应用程序的每个独角兽工作者登录到另一个文件?

如何让我的Rails应用程序的每个独角兽工作者在另一个日志文件中写入?

原因:混合日志文件的问题...在其默认配置中,Rails会将其日志消息写入单个日志文件:log/<environment>.log.

Unicorn工作人员会立即写入同一个日志文件,这些消息可能会混淆.当request-log-analyzer解析日志文件时,这是一个问题.一个例子:

Processing Controller1#action1 ...
Processing Controller2#action2 ...
Completed in 100ms...
Completed in 567ms...
Run Code Online (Sandbox Code Playgroud)

在此示例中,在100毫秒内完成了什么操作,在567毫秒内完成了什么操作?我们永远无法确定.

logging ruby-on-rails worker unicorn

9
推荐指数
1
解决办法
2607
查看次数

Magento是线程安全的吗?

是否有人使用Magento与Apache worker MPM?

我已经阅读了使用worker而不是prefork的稳定性和安全性的相互矛盾的报告,但也读到了工作者比prefork快得多.

php apache worker thread-safety magento

9
推荐指数
1
解决办法
1451
查看次数

nodejs的工作队列?

我正在开始使用节点的集群API和mongoose为节点编写工作队列.

我注意到很多lib已经存在,但已经使用redis和forking.是否有充分的理由进行分叉而不是使用集群API?

编辑,现在我也发现:https://github.com/xk/node-threads-a-gogo - 太多的选择!

因为我已经使用了mongo,所以我宁愿不添加redis.此外,我的要求非常宽松,我希望持久性,但第一个版本可能没有它.

问题的第二部分:今天有哪些最稳定/最常用的nodejs工作队列库?

message-queue worker node.js

9
推荐指数
2
解决办法
2万
查看次数

JavaFX SwingWorker等效吗?

JavaFX是否与Java SwingWorker类等效?

我知道JavaFX 任务,但是你只能发布字符串消息或进度.我只想在GUI线程中调用一个方法,就像我对SwingWorker一样(通过发布任意类型的消息).

赫雷斯是我的意思的一个例子:

class PrimeNumbersTask extends
         SwingWorker<List<Integer>, Integer> {
     PrimeNumbersTask(JTextArea textArea, int numbersToFind) {
         //initialize
     }

      @Override
     public List<Integer> doInBackground() {
         while (! enough && ! isCancelled()) {
                 number = nextPrimeNumber();
                 publish(number);
                 setProgress(100 * numbers.size() / numbersToFind);
             }
         }
         return numbers;
     }

      @Override
     protected void process(List<Integer> chunks) {
         for (int number : chunks) {
             textArea.append(number + "\n"); // HERE: execute in GUI thread
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

非常感谢您的回答.我正在寻找的解决方案是使用Platform.runLater(Runnable guiUpdater).

java multithreading javafx worker thread-safety

9
推荐指数
1
解决办法
6359
查看次数

Python工作进程池和运行多个进程之间有什么区别?

我不确定何时使用工作池与多个进程.

processes = []

for m in range(1,5):
       p = Process(target=some_function)
       p.start()
       processes.append(p)

for p in processes:
       p.join()
Run Code Online (Sandbox Code Playgroud)

VS

if __name__ == '__main__':
    # start 4 worker processes
    with Pool(processes=4) as pool:
        pool_outputs = pool.map(another_function, inputs)
Run Code Online (Sandbox Code Playgroud)

python pool process worker multiprocessing

9
推荐指数
2
解决办法
4362
查看次数

NodeJS 中的 Worker 将产生的线程数

我试图了解 NodeJS 中工人的工作。我的理解是,每次我们生成一个worker,它都会使用自己的Node/V8实例创建一个新线程。

那么下面的代码会产生 50 个线程吗?

它是如何分布在CPU核心上的?

这是index.js

const { Worker } = require("worker_threads");
var count = 0;

console.log("Start Program");

const runService = () => {
  return new Promise((resolve, reject) => {
    const worker = new Worker("./service.js", {});
    worker.on("message", resolve);
    worker.on("error", reject);
    worker.on("exit", code => {
      if (code != 0) {
        reject(new Error("Worker has stopped"));
      }
    });
  });
};

const run = async () => {
  const result = await runService();
  console.log(count++);
  console.log(result);
};

for (let i = 0; i …
Run Code Online (Sandbox Code Playgroud)

javascript multithreading worker node.js

9
推荐指数
1
解决办法
1万
查看次数

使用 Quarkus 启动工作线程的正确方法?

我正在实现 Quarkus 服务器。服务器启动时,应启动一个(永无止境的)后台进程。

@ApplicationScoped我知道我可以使用实现以下功能的 bean 来观察启动事件void onStart(@Observes StartupEvent ev)

但是启动后台进程的最佳方式是什么?有限制吗?在 J2EE 中,不应创建线程,而应使用ManagedExecutorService带有注释方法的 EJB @Asynchronous

Quarkus 里有类似的东西吗?我只找到了调度程序注释(这很好,但我只想在开始时启动一个进程一次)。

那么我可以只创建线程吗?或者只是把我的无限代码放进去void onStart(@Observes StartupEvent ev)

谢谢

multithreading background startup worker quarkus

9
推荐指数
1
解决办法
1万
查看次数

网络工作者突然终止

我在chrome上发起了一个web worker,它有一个简单的函数,它被重复调用setTimeout.令人惊讶的是,在调用函数大约1000次之后,Web worker终止了.有谁能解释为什么?我猜chrome正在做一些优化.

webworker.js

function hi() {
    postMessage('1');
    setTimeout(hi, 1);
}
hi();
Run Code Online (Sandbox Code Playgroud)

main.js

var blob = new Blob([code]);
var blobURL = window.URL.createObjectURL(blob);
var worker = new Worker(blobURL);
worker.onmessage = function(data) {
    console.log(data.data); // gets called around 1000 times and done
};
Run Code Online (Sandbox Code Playgroud)

编辑:转载在一个小提琴:http: //jsfiddle.net/meovfpv3/1/ 似乎需要任意长的onmessage回调停止射击,快几秒钟,只要+5分钟

javascript google-chrome worker web

8
推荐指数
2
解决办法
890
查看次数