问题标签 [gearman]
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.
php - Net_Gearman 从工作函数中访问 job_id?
我正在尝试从我的工作函数中访问当前作业的 job_id,以便我可以将结果保存到与当前工作函数相等的键下的 memcached。有没有办法做到这一点?
php - 使用 PHP/Net_Gearman 的 Gearman,执行从其他工作人员调用的作业的工作人员变得无响应
我正在使用 gearman 在多个工作服务器之间分配长时间运行的任务。对于我的一个工作任务,我尝试调用另一个后台作业。后台作业由另一个工作人员成功执行......但是该工作进程不响应之后添加到 gearman 的任何新工作。
有谁知道可能会发生什么?这是gearman的功能吗?
编辑:
此外,如果我重新启动我的工人,他们会重复其他工人排队的任务。Gearman 似乎没有意识到工作已经完成。
编辑2:
试过:
从我的其他工作人员调用的工作人员函数中。这是我收到的输出:
编辑 3:
好吧,我想出了一个hackey方法来解决这个问题。以下是相关的代码片段。我正在为我的项目使用 codeigniter,并且我的 gearman 服务器存储为一个数组。如果连接为空,我只需在我的工作代码中测试,如果是,则使用随机的 gearman 服务器重新建立它。我敢肯定这很糟糕,所以如果有人有一些改进的见解,我将非常感激。
gearman - gearman 和重试具有不可靠外部依赖的工人
我正在使用 gearman 对各种不同的作业进行排队,其中一些总是可以立即得到服务,而一些可能会“失败”,因为它们需要不可靠的外部服务。(例如,发送电子邮件可能需要经常不可用的 SMTP 服务器。)
如果外部服务出现故障,我想将所有需要该服务的作业保留在队列中,并偶尔(例如每隔几分钟)重试一项作业,直到该服务再次可用。(如果服务几个小时不可用,也许可以选择发送电子邮件。)
但是,我希望尽快将不需要失败服务的工作传递给工人。如何做到这一点?(如有必要,我很乐意将一些逻辑放入工人中,尽管在工人方面节流似乎有点“迟到”。)
php - 在后台运行 Gearman Worker
我正在使用带有 PHP 5.3.8 的 Ubuntu Natty。我刚刚让 Gearman 在我的服务器上工作。
我用 PHP 手册中的一些脚本做了一些测试,一切正常。
但是,我想知道是否有一种方法可以在后台运行工人,并对其进行监控,以便当我转向多工人情况时,我可以跟踪我有多少工人在职的。
通常,我必须打开两个终端,一个用于工作人员,一个用于客户端。在执行 php 脚本后,worker 的那个就变成了“卡住”。
提前致谢。
gearman - 如何通过 Monit 监控 gearmand 守护进程?
所以监控gearman server的配置文件为:
来自monit.log
但是Monit说该过程无法启动。有谁知道如何使它工作?提前致谢。
php - Supervisord 为 PHP 和 Gearman 添加多个进程
我最近使用 PHP5-FPM、Gearman 和 Supervisor 设置了 Ubuntu Natty。我已经编辑了我的 Supervisord 配置来运行 Gearman 工作人员。
lsof -i -P
这是我在运行 supervisord 之前的相关信息(仅显示 gearmand 和 php 进程) :
这就是我在我lsof -i -P
之后得到的/etc/init.d/supervisor stop && /etc/init.d/supervisor start
。
我没有看到任何关于 supervisord 本身的列表,我应该将 supervisord 视为命令之一吗?!
无论如何,当我再次停止并启动(或重新启动)supervisord 时:
看起来每次我停止并启动supervisord时,它都会创建另一个php进程,然后再创建另一个。只有当我重新启动 gearmand 时它才会恢复正常,即/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server start
。
这对我来说似乎不正常,因为当我停止 supervisord 时,它应该停止
这是supervisord的工作方式吗?!有什么办法可以防止这种情况发生吗?!
提前致谢。
编辑
我发现了导致问题的原因。这是与 supervisord.conf 和我的初始化脚本的小冲突。
我的 supervisord.conf 文件具有以下设置:
但是我的初始化脚本/etc/init.d/supervisord
具有以下设置:
所以我只是更改了 supervisord.conf 中的设置以匹配我的 init 脚本中的设置。
另外,我stopsignal=KILL
在我的supervisord配置文件(supervisord.conf)中添加了程序配置。
感谢 Minaz 的指导。
php - 从命令行运行 Gearman PHP 的分段错误
我正在使用带有 PHP 5.3.5 和PECL Gearman 0.8.0的 Ubuntu Natty 。这是版本信息:
尝试通过命令行运行 Gearman 客户端时出现分段错误(我的工作人员已经在运行)。
这是我在命令行上得到的:
这是我的工人代码:
这是我的客户代码:
编辑
看来分段错误是由 Imagick 引起的。所以我做了以下处理这个问题。
- 删除 imagick
dpkg --purge --force-all php5-imagick
。我在设置 PHP 时安装了这个 - 重新启动 PHP(这可能因您安装 php 的方式而异)
- 重启 Gearman 作业服务器
/etc/init.d/gearman-job-server stop && /etc/init.d/gearman-job-server
现在一切似乎都正常。
php - Gearman 无法连接到服务器
有谁知道在 Gearman 中可能导致此问题的原因是什么?
PHP 警告:GearmanClient::doBackground(): gearman_connection_flush: 无法连接
我正在尝试连接到另一台服务器以运行 gearman 任务,并且我正在使用 PECL PHP Gearman 包。
python - Python Gearman 从后台任务中获取数据
我正在尝试将 gearman 与背景任务一起使用,并从工作人员那里获取数据进度。在文档中,我看到了方法:send_job_data 和 send_job_status,但使用后台第一种方法不起作用(我在 job.data_updates 中看不到数据),但 job.status 中的状态发生了变化。
我将此代码用于测试人员: from gearman import GearmanWorker import time
来自客户端的这段代码: from gearman import GearmanClient client = GearmanClient(['192.168.1.79:4730'])
此代码(阻塞)工作正常:
而且这个客户端不能正常工作(不更新任务状态并且不获取数据/结果):(
我怎样才能正常获取这些数据?因为我的后台任务将工作几个小时并在消息中发送有关我们状态的信息。
python - 不使用 fabfile 的结构中的远程 ssh
我正在编写一个程序来使用fabric 和gearman 远程执行一堆命令。
以下是 Gearman 的客户端代码
以下是我的工人代码
问题是当我运行工作程序和客户端代码时,工作程序仍然要求我提供主机名,即使我已经提供了主机名。有没有其他方法可以在 Fabric 中设置主机名?我不打算产生一个子进程并运行结构 cmd。