我们使用PHP gearman worker并行运行各种任务.一切都运行得很好,我有愚蠢的小shell脚本,当我想要它们时将它们旋转起来.作为一名程序员(因此也是懒惰的),我想看看我是否可以通过一个新手脚本来解决这些问题.
我想出了如何使用实例节,所以我可以使用实例编号启动它们:
description "Async insert workers"
author "Mike Grunder"
env SCRIPT_PATH="/path/to/my/script"
instance $N
script
php $SCRIPT_PATH/worker.php
end script
Run Code Online (Sandbox Code Playgroud)
这很好用,就像这样开始它们:
sudo start async-worker N=1
sudo start async-worker N=2
Run Code Online (Sandbox Code Playgroud)
我想要使用这些工作者的方法是调整其中的一些(可能每个核心一个等),我想在启动时这样做.要清楚,我不需要upstart脚本来检测核心数量.我很高兴只说"做8个实例",但这就是我想要多次运行的原因.有没有办法让我在upstart脚本中使用"start on"子句自动执行此操作?
例如,启动实例1,2,3,4?然后让它们在关机时正常退出?
我想我可以将它挂钩到init.d脚本中,但我想知道upstart是否可以处理这样的事情,或者是否有人已经弄清楚了这个问题.
干杯啦!
有没有办法配置多个工作者和/或Web进程在单个Heroku应用程序容器中运行?或者这是否必须分解为多个Heroku应用程序?
例如:
worker: node capture.js
worker: node process.js
worker: node purge.js
web: node api.js
web: node web.js
Run Code Online (Sandbox Code Playgroud) 我正在使用Bull实现 NestJS 工作线程、队列。
根据文档,工作程序和服务器(将)在同一个“进程”中运行,但我想在单独的进程中运行工作程序,以免阻塞主事件循环。
我认为这被称为“在单独的二进制文件中运行任务”或其他名称。
无论如何,我尝试用谷歌搜索它,浏览 NestJS 的文档,但找不到类似的东西。
++ 换句话说:
我有一个主项目(我当前的),我想在单独的进程(独立应用程序)中创建工作人员,并希望连接我当前的主项目和工作人员。而且我在文档中找不到它。
我应该在哪个模块中实例化我的 Bull 实例?我假设我会将其保留producer在主模块和consumer工作模块中。
我怎样才能这样做呢?
请注意,我所说的“单独进程”并不是指在单独进程中运行特定任务,如 Bull文档中所定义。我想将整个工作模块部署在一个单独的进程中或任何应该使用的术语中。
++ [额外,如果可能的话]
在运行我的服务器和worker之前,我还想检查我的worker(公牛实例)是否成功连接到我的Redis服务器。我在公牛的文档中找不到任何内容...您认为有一个好的解决方法吗?
我使用SwiftMailer从一个齿轮工人进程发送电子邮件.我正在使用该Swift_SmtpTransport课程发送电子邮件.
问题是如果此工作进程暂时保持空闲状态,则SwiftMailer smtp连接会超时.现在,当下一个作业到来时,SwiftMailer无法发送电子邮件,因为连接已超时.
理想情况下,我想在每个工作后关闭smtp连接.我无法在课堂上找到一个专门做这个的api.unset()对象也不起作用,因为这是一个静态类.
我目前正在尝试确定每个Amazon实例类型的适当工作人数.我曾经经营过一名Gunicorn工人,但事实证明这很慢.
许多开发人员目前正在使用此公式来衡量适合的工人数量:
NUM_WORKERS=3 #recommended formula here is 1 + 2 * NUM_CORES
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,亚马逊对每个实例运行的核心数量并不十分清楚.例如,M1小实例有1个EC2计算单元(1个虚拟核心和1个EC2计算单元)
这基本上意味着什么?它有一个核心?或者它有两个核心?
worker-process worker amazon-ec2 amazon-web-services gunicorn
是否有其他方法可以在 .NET 6 Worker Service 模板中添加“AddHttpClient()”设置?
例如,在最小 API 中,我们可以使用:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHttpClient();
Run Code Online (Sandbox Code Playgroud)
在 Worker Service 模板中不是:
我正在用Java实现一个工作池.
这基本上是一个完整的对象加载,它将拾取数据块,处理数据然后存储结果.由于IO延迟,工作人员将远远多于处理器核心.
服务器专用于此任务,我想从硬件中获取最大性能(但不,我不想在C++中实现它).
最简单的实现是使用单个Java进程来创建和监视许多工作线程.另一种方法是为每个worker运行一个Java进程.
假设为了争论一个四核Linux服务器,您会预期哪些解决方案更具性能?为什么?
您可以假设工人永远不需要彼此沟通.
我致力于一个基于多租户云的应用程序的Web应用程序(许多客户端,每个客户端都有自己独立的"环境",但都在共享的硬件集上),我们正在引入用户批量处理的能力为以后的处理工作.批量工作的类型实际上并不重要,只有足够的数量才能在没有工作队列的情况下进行,这实际上并不实际.我们选择RabbitMQ作为底层队列框架.
因为我们是一个多租户应用程序,所以我们不一定希望客户端能够为另一个客户端造成冗长的队列处理时间,因此我们浮出水面的一个想法是在每个客户端基础上创建一个队列并拥有一个共享工作池指向所有客户端队列.问题在于,就我所能想到的最好,工人直接绑定到特定的队列,而不是交换.在我们理想的世界中,我们的客户端队列仍将被处理,而没有一个客户端阻止另一个客户端队列,我们可以通过启动更多工作人员或关闭空闲工作人员来根据需要增长或缩小共享工作者池.将工作人员绑定到特定队列会使我们在实际意义上无法做到这一点,因为我们经常会有很多工作人员闲置在没有活动的队列上.
是否有相对直接的目标来实现这一目标?我是RabbitMQ的新手,并没有真正完成我们所追求的目标.我们也不想编写一个非常复杂的多线程消费者应用程序,这是我们可能负担不起的开发时间和测试时间的时间.我们的堆栈是以Windows/.Net/C#为基础的,如果它是germaine,但我不认为这应该对手头的问题有重大影响.
我搜索,搜索和搜索,但没有找到任何资源.
有没有什么办法来运行一个工人在一个AppFog的PHP应用程序?
我只根据这些语言的框架找到了运行Ruby,Node.js和Python worker的指令.
我正在写一个Jest测试,并且无法解决使用webpack的导入问题 worker-loader
import ImageInfoWorker from 'worker-loader?name=image_info!@WORKERS/image-info';
Run Code Online (Sandbox Code Playgroud)
我有一些其他别名在我的测试中正确解析,例如:
import Store from '@SUPPORT/store';
import * as api from '@SUPPORT/api';
Run Code Online (Sandbox Code Playgroud)
这是相关的片段 package.json
"jest": {
"moduleFileExtensions": ["js", "jsx"],
"moduleNameMapper": {
"^@CSS/(.*)$": "<rootDir>/css/$1",
"^@COMPONENTS/(.*)$": "<rootDir>/js/components/$1",
"^@MODELS/(.*)$": "<rootDir>/js/models/$1",
"^@STORES/(.*)$": "<rootDir>/js/stores/$1",
"^@SUPPORT/(.*)$": "<rootDir>/js/support/$1",
"^(.*?)@WORKERS/(.*)$": "$1<rootDir>/js/workers/$2"
}
}
Run Code Online (Sandbox Code Playgroud)
这是resolve我的webpack配置的部分:
resolve: {
extensions: ['.js', '.jsx'],
modules: [process.env.NODE_PATH, 'node_modules'],
alias: {
'@CSS': path.join(projectRoot, 'css'),
'@COMPONENTS': path.join(projectRoot, 'js', 'components'),
'@MODELS': path.join(projectRoot, 'js', 'models'),
'@STORES': path.join(projectRoot, 'js', 'stores'),
'@SUPPORT': path.join(projectRoot, 'js', 'support'),
'@WORKERS': path.join(projectRoot, 'js', 'workers')
}
},
Run Code Online (Sandbox Code Playgroud)