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

http - 使用异步队列连接 http 请求/响应模型

将同步 http 请求/响应模型与基于异步队列的模型连接起来的好方法是什么?

当用户的 HTTP 请求到来时,它会生成一个进入队列的工作请求(在本例中为beanstalkd)。其中一名工作人员接听请求,完成工作并准备响应。

队列模型不是请求/响应——只有请求,没有响应。所以问题是,我们如何最好地将响应返回到 HTTP 世界并返回给用户?

想法:

  1. Beanstalkd 支持轻量级主题或队列(他们称之为管)。我们可以为每个请求创建一个管道,让工作人员在该管道上创建一条消息,并让 http 进程在管道上等待响应。不要特别喜欢这个,因为它有 apache 进程坐在那里占用内存。

  2. 让 http 客户端轮询响应。用户的初始 HTTP 请求启动队列中的作业并立即返回。客户端(用户的浏览器)定期轮询响应。在后端,worker 将其响应放入 memcached,我们将 nginx 连接到 memcached,因此轮询是轻量级的。

  3. 使用彗星。类似于第二个选项,但使用更高级的 http 通信来避免轮询。

我倾向于 2,因为它很容易而且众所周知(我还没有使用过彗星)。我猜可能还有一个我没有想到的更好的明显模型。你怎么看?

0 投票
4 回答
3818 浏览

python - Python 2.5 上选择模块的问题

我在 Python 2.5 中有一个应用程序,它监听 beanstalk 队列。它在我迄今为止测试过的所有机器上都能正常工作,除了我新买的 MacBook Pro。

在该计算机上,当我尝试运行它时,出现此错误:

serverconn.py 有以下导入:

当我尝试从命令行运行它时,它也失败了:

您对可能发生的事情有任何想法吗?

PS:尽管我很确定这不是源问题,但如果您需要有关失败的源的一些背景信息,可以在 [ http://pastie.org/399342](this paste)上找到。

更新:因为我得到的第一个答案推测 Mac OS 是否支持 select.poll() ,但我也有一个 iMac 并且具有完全相同的 OS 版本并且它工作正常:

0 投票
3 回答
393 浏览

python - 从 python 库调用时,Solaris 上的 BeanStalkd 不返回任何内容

我正在使用 Solaris 10 操作系统(x86)。我安装了 beanstalkd,它通过使用命令“beanstalkd -d -l hostip -p 11300”开始正常。

我的系统上有 Python 2.4.4 我安装了 YAML 和 beanstalkc python 库来连接 beanstalkd 和 python 我的问题是当我尝试编写一些代码时:

导入 beanstalkc beanstalk = beanstalkc.Connection(host='hostip', port=11300)

到目前为止没有错误,但是当我尝试在 beanstalk 上做一些事情时,比如说列出队列。没发生什么事。

豆茎.tubes()

它只是挂起,没有任何回报。如果我取消操作(在 python env 上使用 ctr+c)或停止服务器,我会立即看到输出:

回溯(最后一次调用):文件“”,第 1 行,在?文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 134 行,在管中返回 self._interact_yaml('list-tubes\r\n ', ['OK']) 文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 83 行,_interact_yaml 大小,= self. _interact(command,expected_ok,expected_err)文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第57行,在_interact状态,结果=自我._read_response() 文件“/usr/lib/python2.4/site-packages/beanstalkc-0.1.1-py2.4.egg/beanstalkc.py”,第 66 行,在 _read_response response = self.socket_file.readline() .split() 文件“/usr/lib/python2.4/socket.py”,第 332 行,在 readline data = self.

知道怎么回事吗?我是一个 Unix 新手,所以我不知道我做错了什么设置导致这个。

编辑:似乎问题出在 BeanStalkd 本身,有人在 Solaris 10 上使用过这个吗?如果是这样,您使用的是哪个版本?标记为 one 的 v1.3 在 Solaris 上无法编译,而来自 git 代码库的最新版本编译它会导致上述问题(或者在 Solaris 上可能需要进行一些配置?)。

edit2:我使用 beanstalkd、PyYAML、pythonbeanstalc 和 libevent 将相同的组件安装并编译到 UBUNTU 机器上,它工作正常。问题似乎是关于在 solaris 上编译 beanstalkd,我还没有制作或阅读任何解决方案。

0 投票
1 回答
5140 浏览

php - 使用 beanstalkd 进行 PHP 异步处理。你推荐它吗?

你会推荐使用 beanstalkd [ http://kr.github.com/beanstalkd/ ]

PHP中的异步处理?

我需要一些使用过这个库的人的反馈/评论利弊。

谢谢,

0 投票
3 回答
2045 浏览

python - 从 Python(或任何 UNIX)客户端向 beanstalkd 添加身份验证

所以我喜欢 beanstalkd:小、轻量级、优先处理消息、拥有大量客户端、易于使用。

我不喜欢 beanstalkd 的地方:如果您可以连接到端口,则缺少身份验证,您可以将消息插入其中。

所以我的想法是要么将它防火墙到受信任的系统(这是一个痛苦的维护并且在应用程序外部添加另一层要做的事情)或者使用像stunnel之类的东西将它包装在 TLS/SSL 中(这将产生一个很好的块建立连接和诸如此类的开销)。我确实想过可能会签署作业(作业字符串的MD5或SHA+时间值+附加到作业的秘密),但如果攻击者用虚假作业淹没服务器,我仍然会遇到麻烦。谁能想到任何其他方法来保护 beantalkd 免受攻击者插入虚假消息的影响?尤其是那些在计算或管理上不会产生大量开销的。

0 投票
2 回答
1811 浏览

php - 检查我的 PHP beanstalkd 后台进程的状态

我有一个用 PHP (CakePHP) 编写的网站,其中某些资源密集型任务由后台进程处理。这是通过 Beanstalkd 消息队列完成的。我需要一些方法来检索该后台进程的状态,以便我可以使用 Monit 对其进行监控。

后台进程是一个与 Beanstalkd 通信的 CakePHP Shell(只是一个 PHP CLI 脚本)。它只是在 Benastalkd 上做一个 reserve() 并等待新消息。当它收到一条消息时,它会处理它。我想要某种方式用Monit监控这个进程,以便在出现问题时重新启动后台进程。

到目前为止,我一直在考虑编写一个 PHP CLI 脚本,该脚本在 Beanstalkd 中删除一条消息。后台进程获取消息并以某种方式将其内部状态传回 CLI 脚本。但是怎么做?插座?共享内存?其他IPC方法?

还是我在这里可能太复杂了,有没有更简单的方法来使用 Monit 监控这样的过程?

提前致谢!

0 投票
4 回答
6791 浏览

message-queue - 通过 CRON 的消息队列与 DB 表队列

我们即将推出一个大型项目,其中包含大量媒体处理(图像、视频)以及电子邮件输出等,通常我们会将这些内容放入名为“email_queue”的表中,然后使用 cron 运行脚本处理表中的队列。

我已经阅读了很多有关 beanstalkd 等消息队列系统的内容,甚至还进行了设置。它使用起来既简单又好用,问题是我不确定我是否遗漏了一些东西。

有人可以详细说明使用队列系统而不是表和 CRON 的好处吗?因为我真的看不到它们是什么。

谢谢

0 投票
1 回答
255 浏览

list - 在 memcached 中,您可以将 List 作为值。你能在 beanstalkd 中列出一个列表吗?

实际上,我想用它来记录。我想将字典放入 beanstalkd。

每次有人进入我的网站时,我都想将字典放入 beanstalkd,然后每天晚上,我都需要一个脚本来获取所有工作并将它们保存在数据库中。

这将使它快速和容易。

0 投票
2 回答
678 浏览

perl - beantalkd 的条件工作队列插入?

我正在使用 beanstalkd 的 Perl 客户端。我需要一种简单的方法来避免两次将相同的工作排入队列。

我需要的东西基本上需要等到有 K 个元素,然后将它们组合在一起。为了做到这一点,我有制片人:

和消费者:

这与请求/处理的数量呈线性关系,但在以下情况下:

假设所有这些插入发生在检索作业之前,这将添加 N 个队列项,它会执行以下操作:

有没有更聪明的方法来做到这一点,以便它不会不必要地插入/处理以后的作业请求?

0 投票
8 回答
16808 浏览

monitoring - beantalkd 的统计/监视器/检查器

有谁知道可以监控 beanstalkd 队列的应用程序?我正在寻找能够显示管道和工作统计数据的东西,并允许您检查详细信息。

我对语言/平台并不是很挑剔,只是想知道在我自己写之前是否有什么东西。