问题标签 [beanstalkd]

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 回答
2037 浏览

python - 如何在 Python 中使用 beanstalkc 对 URL 进行排队并执行作业

我有一个名为的函数spider,它seed作为参数。seed是我发送给蜘蛛函数的 URL 的名称。现在我的问题是如何在 Python 中使用 beanstalkc 对 URL 进行排队并执行作业。

0 投票
1 回答
945 浏览

python - Beanstalkc 超时问题

我在 Python 中使用 beanstalkc 来为必须解析 URL 列表的程序进行排队。因此,我在 beanstalk 中使用 timeout 来避免任何 URL 消耗大量时间。但即使在使用它之后,我的进程也不会超时,并且需要花费大量时间来解析几个 URL。我正在使用以下代码:

0 投票
1 回答
895 浏览

mysql - 豆茎vs DB

我正在编写一个 db logging ruby​​ gem,它将简单地从 Beanstalk 队列中取出一个作业并将其写入数据库。

那是服务器 A 上的一个进程在服务器 B 上的 Beanstalk 队列中放置一个作业(它想要记录),而我在服务器 B 上的日志记录进程将其取出并将其写入服务器 B 上的 mysql DB。

我想知道这是否值得?将作业放入 Beanstalk 队列比写入数据库更快。或者我想要记录到数据库的进程可以直接将其写入数据库而不是使用记录过程。

请注意,beantalk 服务器和数据库都在另一台服务器上。

Beanstalk 在内部进行从服务器 A 到服务器 B 的套接字调用。我相信 mysql 也需要这样做吗?

因此,mysql 到另一台服务器会比放入 beanstalk 队列慢。

0 投票
1 回答
177 浏览

ruby - 检测哪个工作人员将 TTR 过期的作业返回到队列?

我有多个工作人员使用 beanstalk-client-ruby 在 beanstalkd 队列中处理请求。

出于测试目的,工作人员在从队列中挑选工作后随机进入无限循环。

Beanstalk 注意到一个作业已被保留太久,并将其返回到队列中以供其他工作人员处理。

我怎么能检测到这种情况已经发生,以便我可以杀死有故障的工人?

看起来我可以检测到发生超时:

现在我怎么能这样:

0 投票
1 回答
856 浏览

php - 如何访问多个 Web 服务器上的 beanstalk 队列

我已经在一台服务器上安装了 beanstalk。我们有多个生产服务器,我们想在这些服务器上使用 beanstalk。目前只有 1 个 Web 服务器可以访问 beanstalkd。

如何配置或使用 beanstalkd 以便我们可以访问所有服务器上的 beanstalkd。

感谢你的帮助。

0 投票
1 回答
7913 浏览

php - 如何使用 PHP 设置 Beanstalkd

最近我一直在研究 Beanstalkd 与 PHP 的使用。我学到了很多,但对服务器上的设置等有一些疑问。

这是我看到它的工作方式:

  1. 我在我的 Ubuntu 服务器上安装了 Beanstalkd 和任何依赖项(例如 libevent)。然后我启动 Beanstalkd 守护程序(基本上应该一直运行)。
  2. 在我网站的某处(例如当用户执行某些操作时等)任务被添加到 Beanstalkd 队列中的各种管中。
  3. 我有一个 bash 脚本(例如下面的脚本),它作为一个基本上执行 PHP 脚本的守护进程运行。

    /li>

4) 工作脚本将有这样的东西来执行排队的任务:

现在这是我基于上述设置的问题(如果我错了,请纠正我):

  1. 假设我有将 RSS 提要导入数据库或其他东西的任务。如果 10 个用户同时这样做,他们都会在“测试”管中排队。然而,他们一次只能被处决一个。让 10 个不同的管子同时执行会更好吗?

  2. 如果我确实需要更多管子,那是否也意味着我需要 10 个工作脚本?除了 watch() 函数中的字符串文字外,每个管子都使用基本相同的代码同时运行。

  3. 如果我将该脚本作为守护进程运行,它是如何工作的?它会不断执行worker.php 脚本吗?该脚本循环直到理论上队列为空,所以它不应该只启动一次吗?守护进程如何决定多久执行一次worker.php?这只是一个设定吗?

谢谢!

0 投票
2 回答
1848 浏览

beanstalkd - 使用 PHP-FPM 管理队列消费者可以吗?

有一个 beanstalkd 队列,每 10 分钟就会充满很多任务,并且每个任务都尽快处理是重中之重。任务可能需要几毫秒才能完成,因为有对第三方服务的调用,这些调用往往会时不时地超时。

因此,由于 PHP 没有多线程,一种选择是创建大量空闲的工作人员,它们会尝试保留任务,但可能会占用太多的 RAM,而这些机器上可能不可用。

使用 PHP-FPM 调整工人数量并节省一些 RAM 是不是一个好主意?准备好生产了吗?有更好的解决方案吗?

谢谢

0 投票
3 回答
5315 浏览

php - beanstalkd - 保留但未完成的工作会发生什么?

我创建了一个从beanstalkd读取并处理作业的 PHP 脚本。那里没有问题。

我要做的最后一件事就是为它编写一个初始化脚本,这样它就可以作为服务运行。

然而,这给我带来了另一个问题。尝试停止服务时,一种明显的方法是尝试终止该进程。但是,如果我这样做,如果 PHP 脚本处理到一半,工作会发生什么?所以任务被保留了,但脚本从来没有成功或失败(分别删除或埋葬),会发生什么?

我的猜测是 TTR 会过期,然后它会被放回就绪队列?

还有第二个问题,关于如何更好地管理停止 PHP 服务的任何提示?

0 投票
1 回答
627 浏览

java - 基于Java的任务处理服务器

为小型轻量级服务器寻找一个基础框架,该服务器可以有效地从 beanstalk 或 SQS 之类的东西中提取作业/消息并进行处理。

Octobot (https://github.com/cscotta/octobot) 看起来不错,但最近似乎没有人为它做出贡献。还有其他选择吗?

0 投票
1 回答
863 浏览

php - 在特定时间运行多个密集型作业的最佳解决方案

我们有一个 Web 应用程序,它使用 IMAP 在用户定义的时间有条件地将消息插入用户的邮箱。

这些“作业”中的每一个都存储在 MySQL 数据库中,并带有一个时间戳,表明作业应该运行的时间(可能是未来几个月)。用户可以随时取消作业。

问题是建立 IMAP 连接是一个缓慢的过程,在我们插入消息之前,我们经常必须有条件地检查收件箱中是否有某人的回复(或类似的),这给每个作业增加了相当大的处理开销。

我们目前有一个系统,其中每分钟左右运行一次 cron 脚本,以便从数据库中获取所有需要在接下来的 X 分钟内交付的作业。然后,它将它们分成几批 Z 作业,并为每批执行一个异步 POST 请求,将这些 Z 作业的所有数据返回到同一台服务器(以实现“假”多线程)。然后,服务器处理通过 HTTP 传入的每批 Z 作业。

我们为多线程使用异步 HTTP POST 而不是 pnctl_fork 之类的原因是,我们可以添加其他服务器并让它们将数据 POST 到这些服务器,并让它们运行作业而不是当前服务器。

所以我的问题是 - 有没有更好的方法来做到这一点?

我很欣赏可以使用像beanstalkd这样的工作队列,但它们是否符合必须在特定时间运行作业的模型?

另外,因为无论如何我们都需要将作业保留在数据库中(因为我们需要为用户提供用于管理作业的 UI),所以在某处添加工作队列实际上会增加而不是减少开销吗?

我确信有更好的方法来实现我们的需要 - 任何建议都将不胜感激!

我们正在使用 PHP 来解决所有这些问题,因此我们正在寻找基于 PHP/兼容的解决方案。