问题标签 [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.
ubuntu - 局域网计算机之间的 Beanstalk 和时间同步
长话短说,我的工具对我的 MySQL 数据库服务器的打击太大了,我遇到了很多问题。因此,我创建了一组工具(PHP 和 Ruby),它们使用 Beanstalk 将我想要在 DB 上完成的工作传达给一组始终运行的 DB 连接。Beanstalk 管用于传入作业和回复。
但是,我已将 ExpireTime 添加到我的数据库请求的作业数据中。本质上,如果 DB 请求作业没有在相当短的时间窗口内执行,则根本不会执行请求。无论如何,请求任务都会自行超时,因此有一个较短的时间窗口可以防止 DB 执行脚本执行一堆永远不会使用的 DB 请求。
只要一切都在一台机器上,这一切都很好。现在我将它扩展到第二台机器,我立即遇到了请求被视为已过期的问题。
任务的当前到期时间是 10 秒——对于我试图完成的简单数据库请求来说,这已经相当长了。如果我将 10 秒增加到足够大的数字,那么数据库请求会快速执行并且不会出现问题。
所以我怀疑这个问题归结为一台计算机认为它是 12:00:XX 而另一台认为它是 12:00:YY 并且 XX 和 YY 之间的差异至少是 8 或 9 秒。
我在局域网中使用 Ubuntu 12.04 桌面和服务器。我用 Ruby (1.8.7) 和 PHP (5.3.10-1ubuntu3.4) 编写程序,使用这个 Beanstalk 队列作为一种 DB 连接池以及一个任务队列,用于在分布式中执行项目/站点相关任务方式。对于 PHP,我使用 pheanstalk,对于 Ruby,我使用 beankstalk-client gem。
我考虑过的一个技巧是创建一个豆茎管,执行数据库请求的计算机大约每秒一次输出它的当前时间。然后,将请求放入队列的分布式计算机将需要获取该作业(并释放它 - 而不是删除它)以获得最新的时间戳。这是粗略的并且(我相信)会导致冲突——即请求等待获取当前时间的作业数据——因为我增加了我添加到此的计算机数量。
我希望这个论坛上的某个人有更好的方法来做到这一点。
python - 当前的 Python Beanstalkc 客户端实现是非阻塞的吗?
我正在使用需要延迟写入 beanstalkd 的扭曲框架编写套接字 API,当前的 Python Beanstalkc 客户端实现是非阻塞的吗?
我已经在 Stackoverflow 上广泛搜索了有关此问题的答案,但没有运气,任何帮助将不胜感激。提前致谢
php - NodeJS setInterval 对性能不利?
我有一个用 nodejs 制作的 beanstalkapp 工作程序,它的作用是有一个 PHP 应用程序可以完成所有站点工作,如果有错误、问题或通知,或者它会将它添加到 beanstalkapp 中。然后,nodejs 需要经常运行,检查 beanstalkapp 是否有任何消息,并对它们做一些事情(给某人发电子邮件,将其添加到日志中,在某处发布)。
我的问题是,这种糟糕的表现是明智的还是有更好的方法来做到这一点?我会假设 setInterval 不会让进程结束,因此会很糟糕?
ruby - 上帝启动了太多的过程
我有一个上帝脚本,应该关注两个跟踪进程。问题是24 小时后它启动了太多的进程。
这是神剧本。
ps aux | grep stalk
返回以下内容。
这是/usr/bin/bbundle
脚本。
运行
sudo god stop app-scripts
不会杀死任何进程。我已经尝试添加
w.uid = "webmaster"
到上帝脚本,但问题仍然存在。我正在运行上帝版
0.12.1
、红宝石版1.9.3p286
和潜行者版0.9.0
。
我究竟做错了什么?
beanstalkd - 多个 beanstalkd 客户端处理一项工作
beantalkd 是否有可能通过多个客户来处理一项工作?在这种情况下应该如何删除作业?
我想将消息从一台服务器发送到另外 10 台服务器,因此所有这些服务器都将完成工作 - 这是关于更新服务器上的本地数据。
我应该为此类任务选择其他任何 MQ 系统吗?
ruby-on-rails - Beanstalkd 服务器未运行其作业
我正在尝试启动 beanstalk 服务器,并做了一项工作来测试它,但我什么也没得到。这是我的代码:
我使用 stalker gem 连接 ruby 和 beanstalkd。任何想法我做错了什么?
ruby - Stalker/beanstalk 异步处理作业
好的,我正在使用 Stalker 和 Beanstalkd 进行一些测试。我的目标是将 500kb 的 post 请求卸载到队列并异步处理它们。
到目前为止,在我的测试中,我有一个非常简单的例子。
和这个文件添加到队列
所以在一个终端我跑
$ stalk worker.rb
工作 1 个工作:[你好]
然后我运行跟踪文件
$ ruby stalker.rb
stalker 几乎按预期立即执行,因此没有阻止。
但工作人员大约需要 10 秒才能运行。真的,我希望这 10 个作业的时间更接近 1 秒,因为我希望它们并行运行。
有关执行此操作的下一个最佳步骤的任何建议?
更新:我意识到我可以从不同的终端运行多个工作人员,它会更快地处理队列,例如 2 个工作人员将在大约一半的时间内完成该过程。
beanstalkd - 如果队列很大并且需要一段时间来处理,如何将就绪队列中的 beanstalkd 作业移到前面?
我有一个关于 beantalkd 队列的快速问题。
所以假设我在 beanstalk 队列中有 500,000 个准备好的作业,它们正在等待处理,同时更多的作业被添加到这个队列中。所有这些工作都具有相同的优先级。
是否可以在就绪队列中移动一个作业,以便在该队列中的所有其他作业之前对其进行处理?
我刚刚开始使用豆茎,我想知道这是否可以在豆茎中完成?
我在linux环境下。
我想我可以删除那个特定的作业并重新插入它,优先级允许它首先被处理,但我想避免这样做,除非有一个命令允许我这样做。
如果需要更多信息,请告诉我,我提前感谢您的帮助。:)
ruby - Beanstalkd 的 Stalker 与 Beaneater
我目前正在为我的 Rails 应用程序使用 Stalker。但我刚刚遇到了 Stalker 的超时错误/限制为 2 分钟。我看到另一个关于这个主题的问题,有人回答说 Stalker 没有实现 beanstalkd 的 touch 方法,尽管我看到 beeater 实现了。
那么,有没有人尝试过 beeater 和 Stalker 呢?意见?与功能相比,哪一个更容易使用?对于我的一些任务,我可能会经常遇到超时错误,并且想知道我是应该增加:ttr
还是切换到 beaneater。
ruby-on-rails - 将 Backburner 用于 beanstalk 时,我如何在开发过程中启动工作人员?
我已经阅读了Backburner 教程,但它掩盖了工人的确切含义,似乎上帝被用于生产环境,但所有其他示例只是显示正在使用 Backburner.work,它不会异步处理. 因此,当我在开发模式下使用 WEBrick 时,我不知道如何处理队列中的作业。