问题标签 [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 投票
1 回答
504 浏览

ruby-on-rails - Iron_worker:Rails 中活动记录类的未初始化常量错误

我正在测试 Iron worker(以前是简单的 worker),它无法在 Heroku 上的 Rails 应用程序中识别活动记录类名称。您可以在下面找到“AdImpression”,它是类名。

Iron worker 支持网站上的文档说我可以自由使用活动记录对象,但不知何故对我来说并非如此。

任何的想法?

0 投票
1 回答
263 浏览

.net - 在.net 4中同步多个线程

背景:我正在开发一个已经设计了线程系统的应用程序。它远非最佳,但我目前无法对其进行返工。它不使用任何来自 .net 的较新线程构造,仅使用基本Thread对象和包装线程处理逻辑的对象。

它的一般设置是:(现在有两个组或线程类别)

  • 产生工作线程的主应用程序线程(statthread main)。

  • 工作线程。每个都有一个Thread对象和一个工作对象,它执行所有处理/处理线程之间的边界等。每个线程运行作业,每个作业都有一个JobTypeID.

我需要介绍第三种类型的线程,一种用于控制工人的线程。这些控制消息将来自 wcf Web 服务(因此该线程被隐式处理)。

控制消息是:{暂停/恢复,ID列表}

我的目标:

我试图找出同步这些线程的最佳方法,这样如果一个线程正在处理一个作业,并且有一条消息说要暂停所有作业JobTypeID,它应该阻塞,直到发送简历(对于那个 ID )。这里的问题是,在发送消息时,可能没有相关工作正在处理,因此不需要立即采取行动,而且我也没有工作对象列表,所以我不能简单地遍历每个工作人员并执行 if-matches-then-pause。

实际问题(广义) 你们会建议我做什么来同步一组工作线程、一个生成器/管理器线程和一组控制线程?

我尝试过的事情

一种方法是存储一组ManualResetEvent对象,每个对象一个JobTypeID,并根据传入的消息发出信号并等待它们。您如何看待这种方法?我找不到有关在进程中拥有 100 多个等待句柄的最佳实践或内存/处理成本的任何信息。

另一种方法是拥有一个所有线程都将等待的对象,并且该对象的同步集合JobTypeIDs应该等待。我在使用这种方法时遇到了一些问题。使用一种ManualResetEvent方法,如果我恢复一个工作 ID,但其他人正在等待,我必须执行 set();reset();,这会导致一些竞争条件(即使我尝试执行 WaitHandle.SignalAndWait(x,x) ) 最后,我想出了一个使用 Monitor.PulseAll() 的解决方案。

我还可以使用带有许多锁定对象的监视器——这似乎比许多等待句柄更轻量级。

另外,很抱歉这个问题很长,感谢您的阅读!

0 投票
1 回答
128 浏览

javascript - 从 Firefox 扩展中的工作线程打开本地文件的可接受方式是什么?

我试图将一个相当慢的函数移出主线程,但我要重新定位的代码取决于我使用 Components 对象编写的模块。我的理解是组件由于缺乏线程安全性而被禁止。

我花了很多时间整理 MDN 上的文档,我的脑袋都在游动;似乎 Firefox 有十几种不同的打开文件的方式,它们以不同的方式获取 URI、本机路径或从浏览器内部更复杂的接口生成的任意数量的不兼容对象,我不知道它们是如何互操作的或者什么开始适合这个。我读得越多,我就越不知道自己在做什么。我猜真正的答案很简单,很抱歉要求被喂食,但是:

A)可以从工作线程内部打开(本地)文件吗?

B) 我可以举个例子吗?

C) ...最好是使用 URI 而不是本机路径的示例?

D) ...最好不从工作人员外部实例化和传递任何对象?

我来自 Perl 的传统,while(<>) {}Firefox 似乎拥有所见过的文件 I/OI 中最冗余/迟钝/可怕的系统。

0 投票
1 回答
789 浏览

python - 带有 WSGI + Apache mpm-worker 的 Python 子进程:IOError 4

我在这里有一个奇怪的问题,我无法通过搜索网络找到解决方案:/

在将 Apache 从 mpm-prefork 切换到 mpm-worker 后,在我的 (Django) Python WSGI 应用程序中使用子进程在挂起一段时间后会引发以下异常:

有问题的电话是:

其中 check_output 是 Python 2.7 中此函数的反向移植,而我使用的是 Debian Squeeze 存储库中的 Python 2.6。

实际上,这些进程似乎被执行了,但是却死了:

Apache 配置只不过是设置 WSGIScriptAlias 和一些目录指令。

我错过了显而易见的事情吗?

问候塞巴斯蒂安

解决方案: 原来是Debian 6 附带的 sudo 1.7.4-4中的一个错误。通过从他们的主页安装最新的 1.8.x .deb 来解决。

0 投票
1 回答
12411 浏览

instance - 自动启动多个新贵实例

我们使用 PHP gearman worker 并行运行各种任务。一切都很好,我有愚蠢的小 shell 脚本可以在我想要它们的时候启动它们。作为一名程序员(因此很懒惰),我想看看我是否可以通过一个新贵脚本来启动这些。

我想出了如何使用实例节,所以我可以用实例号开始它们:

这很好用,像这样开始它们:

我想使用这些工人的方式是启动一些工人(可能每个核心一个,等等),我想在启动时这样做。需要明确的是,我不需要 upstart 脚本来检测内核数量。我很高兴只说“做 8 个实例”,但这就是我想要多次运行的原因。有没有办法让我在新贵脚本中使用“start on”子句来自动执行此操作?

比如启动实例1、2、3、4?然后让他们在关机时正常退出?

我想我可以将它连接到 init.d 脚本中,但我想知道 upstart 是否可以处理这样的事情,或者是否有人已经解决了这个问题。

干杯伙计们!

0 投票
6 回答
7607 浏览

c++ - 如果系统处于活动状态,如何检查 C++?

我正在编写仅在 PC 上没有人为活动时才需要运行的代码,例如在屏幕保护程序运行时。关于如何在 Windows 下的 c++ 中执行此操作的任何建议?

@talnicolas,只是为了使用未使用的资源,有多少次人们离开计算机但他们在另一个地方?

0 投票
2 回答
2318 浏览

javascript - 在 Web Worker onmessage 回调中调用 postMessage 会引发 SYNTAX_ERR: DOM Exception 12

在为 Web Worker 编写 onmessage 回调时,当我尝试发送另一个 postMessage() 时,我在控制台中收到“未捕获错误:SYNTAX_ERR:DOM 异常 12”。

0 投票
1 回答
836 浏览

javascript - 如何在 NodeJS 中创建和管理工作进程?

例如,假设用户请求处理一些音频文件,那么 nodejs 当然不能进行密集处理,所以它应该将其卸载到工作进程。

这些工作人员可能需要能够发布/订阅事件,在他们死亡时重生,并且队列应该能够负载平衡,维护缓存并保持活动状态。我见过 0MQ 和其他人喜欢它,但我不确定如何将它集成到 Web 应用程序中......

创建和管理这些工作进程的行业标准方法是什么?使用的工具是什么?

编辑:还有一件事:说音频处理需要很长时间,并且请求超时。除了增加超时之外,有没有办法解决这个问题?

编辑 2:所谓工人,我的意思是像 Heroku 工人测功机 - 他们是如何工作的?

0 投票
1 回答
2397 浏览

ruby - 在 Resque-Worker 中将对象作为参数传递

有没有办法在 Resque-workers 中将对象作为参数值传递。

我想做这样的事情,Resque.enqueue(SomeWorker, obj)而不是Resque.enqueue(SomeWorker, id)我的对象是没有 id 的不同类型。

感谢任何帮助。

0 投票
2 回答
103 浏览

scheduled-tasks - 最小负载调度程序

我正在开发一个并行使用数百个工作人员的系统(评估小任务的物理设备)。有些工人比其他工人快,所以我想知道在没有先验了解他们的速度的情况下,在他们身上负载平衡任务的最简单方法是什么。

我正在考虑使用一个简单的计数器来跟踪工作人员当前正在处理的任务数量,然后对列表进行排序以获得活动任务计数最低的工作人员。这样,缓慢的工作人员将获得一些任务,但不会减慢整个系统的速度。我问的原因是当前的循环方法导致一些非常慢的工作人员(比其他工作人员慢 100 倍)不断累积任务并阻止新任务。

根据当前活动任务的数量对列表进行排序应该是一件简单的事情,但是由于我会每秒对列表进行多次排序(每个任务的平均工作时间低于 25 毫秒),我担心这可能是一个主要瓶颈. 那么是否有一个简单的版本可以让工作人员的任务数最少,而不必一遍又一遍地排序。

编辑:任务通过开放的 TCP 连接推送给工作人员。由于任务之间的依赖关系相当复杂(独占资源使用),因此我们假设所有任务都被分配开始。一旦任务从工作人员返回,所有不再阻塞的任务都会排队,并将新任务推送给工作人员。工作队列永远不会是空的。