问题标签 [worker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
3518 浏览

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

我想知道如何在 Heroku 工作人员测功机上的进程之间进行通信。

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

但是,当我们尝试在本地连接到该 TCP 套接字时,我们一无所获。

我们用于设置队列的 Rake 任务执行以下操作:

这很有效——我们的侦听器进程运行,Resque 尝试处理排队的任务。但是,Resque 作业失败,因为它们无法连接到localhost:12345(特别是Errno::ECONNREFUSED)。

很可能,Heroku 在同一个测功机上阻止了 TCP 套接字通信。有没有解决的办法?

我试图将“代码”从这种情况中取出并在命令行上执行(在服务器进程声称它已正确绑定到 12345 之后):

但这也没有联系。

我们目前正在研究更改客户端/服务器代码以UNIXSocket在双方使用而不是 . TCPSocket,但由于它是现成的软件,如果可能,我们宁愿避免使用自己的分叉。

0 投票
2 回答
418 浏览

grails - Grails 非基于时间的队列

我需要处理上传的文件,它可能只需要 1 秒或 10 分钟。目前我的解决方案是使用 30 秒的计时器进行石英作业,然后在遇到时处理和任意作业。这有几个问题。

一:如果作业将花费不到几秒钟的时间,那么让作业队列等待 30 秒是浪费的。

二:如果队列中只有一项很长的工作,它可以尝试做两次。

我想要的是一个永恒的队列。添加内容后,如果有空闲工作人员,则会立即启动。有解决方案吗?我在看jesque,但我不知道它是否可以做到这一点。

0 投票
2 回答
587 浏览

clojure - Clojure Heroku Worker Dyno 队列

是否可以在 Heroku 上为 Clojure webapp 设置作业队列?我看到你可以做延迟工作并在 Rails 和 Django 中使用 celery,Clojure 有什么类似的吗?

0 投票
2 回答
177 浏览

ruby-on-rails - Rails 工作者优化

我有几个工人正在运行后台工作。这个工人的方法大约有 100 行。在 Rails for Workers 中优化和移动代码到不同文件的一般做法是什么。

0 投票
1 回答
5072 浏览

ruby-on-rails-3 - Heroku dyno/worker 在开始时崩溃

我有一个用 Rails 编写的应用程序,部署在 Heroku 上。我以前一直在做 1 个 web dyno,但是今天我发布了这个应用程序,流量很大,所以我决定增加到 4 个 web dynos 和 1 个 worker dynos。我不知道为什么当我这样做时总是heroku ps显示:

Worker dyno 直接在heroku scale worker=1. 日志如下:

就是这样。你知道为什么吗?网络测功机工作正常。我是否必须在我的应用程序中配置某些内容才能使用工作人员测功机?

如果您能用人类语言向我解释一下,我也将不胜感激将 heroku 平台划分为 web 和 worker dynos 背后的逻辑是什么?我已经阅读了很多次文档,但我仍然认为我错过了理解它的重点,因为我是在一个你有存储限制和东西的世界长大的。

0 投票
1 回答
1535 浏览

c# - 多核服务器上工作进程的 CPU 使用率

设置

我们编写了一个 Windows 服务,它触发单独的工作进程来执行各种 CPU 密集型任务。服务器和工作人员通过 IPC 命名管道进行通信。

目前,我们通过一个简单的Process.Start()调用来创建工人。

当我们在一个相当低规格的双核上运行一些工人时服务器 VM 上运行多个工作人员时,任务管理器告诉我们每个工作人员使用大约 2 - 3% 的 CPU。

然而(这让我们感到困惑),当我们在一个非常强大的八核上执行相同的测试时服务器上执行相同的测试时,我们仍然看到每个工作进程使用 2 - 3% 的 CPU。现在,因为有更多可用的 CPU“能力”,我希望看到每个工作人员使用的 CPU 比例要小得多。

这也意味着在低功率服务器上,我们在创建了 30 个工作进程后达到了 100% 的 CPU。但是在高性能 CPU 上,我们在相同数量的工人之后达到了相同的限制。我们希望能够运行更多的工人。

问题

所以,我有几个问题:

  • 我们是否误解了任务管理器告诉我们的价值观?CPU % 值是所有内核消耗的 CPU 时间量吗?如果是这样,为什么在完全不同的硬件上它是相同的?

  • 我们是否应该做一些特殊/不同的事情来正确地将我们的工作进程分布在多个核心上?目前,这些进程具有默认的处理器亲和性(因此它们能够在任何内核上运行)。

任何帮助、建议、链接,将不胜感激。


对于留下评论的人的一些额外信息:

我最初没有提到它,因为我不一定想为我的问题增加额外的复杂性,但我们的工作进程正在对实时视频流进行视频转码。因此,没有任何工作人员“完成”其任务——只要连接了客户端,它就可以正常工作。

本质上:

  • 客户端连接到服务器
  • 服务器触发连接到远程视频流的工作进程
  • 当从所述视频流中接收到视频时,工作人员对其进行转码并将转码后的视频发送回客户端。

不确定这是否有助于任何其他建议?感谢到目前为止的所有评论。

0 投票
1 回答
338 浏览

background - 无法停止后台工作人员

我正在编写一个在另一个胎面/后台工作人员上的机器人,我试图阻止它,但在按下取消后,机器人仍在工作 oO

代码在这里://停止我的机器人

//启动我的机器人

编辑,跟随评论者链接并在下面得到这个代码它什么都不做,它仍然继续运行

0 投票
3 回答
388 浏览

c# - 临时挂起工作线程的正确方法

我有一个工作线程,它可能在短时间内处于活动状态,而在其余时间处于空闲状态。我正在考虑让线程进入睡眠状态,然后在需要时唤醒它。

我应该注意的任何其他建议?

谢谢!

  • 这是在 C#/.NET4 中
0 投票
1 回答
970 浏览

python - 从主脚本调用 python 工作脚本作为多个实例

我有一个正在监视 Web 服务请求工作区的 python 脚本。每次客户向我的 Web 服务提交作业时,都会在众所周知的位置创建一个唯一的作业文件夹。我有一个脚本在没有“标志”的情况下轮询这个众所周知的文件夹位置(一个具有特定名称的空白文本文件,表示该作业的处理已完成)。

现在我的脚本可以调用工作脚本来处理新文件夹的内容,但必须等到工作脚本完成才能继续分发文件夹。

我的问题是有哪些选项可以使工作脚本的新实例实例化并将控制权返回给经理。创建一个接受工作脚本参数并让管理器脚本通过命令行调用它的python可执行文件是否可行?或者将工作脚本创建到一个可以有许多 instation 处理工作的类中?

一旦工作脚本完成,它就不需要向管理器脚本作业完成发送消息。它将通过将文本文件放入目录中来完成此操作。虽然现在我想起来了,但我必须在某个地方保存每个作业目录已经分发,因为处理工作脚本需要 1.5 分钟。

任何建议/链接将不胜感激。

0 投票
2 回答
4392 浏览

azure - 工作角色中的 ServicePointManager.DefaultConnectionLimit

目前只是了解 Windows Azure。

我正在查看一些示例,并在我看到的工人角色的 OnStart 事件中

ServicePointManager.DefaultConnectionLimit = 5;

我不明白这一点的相关性。

在您的工作人员角色中,您可以设置实例数,所以这肯定会限制条目数吗?

对不起,我很困惑。