如何异步运行非常少量的代码?

时间:2011-07-18 16:24:32

标签: ruby-on-rails ruby multithreading passenger

我想在我的rails应用程序中异步运行少量代码。该代码记录了一些已知信息。我希望此任务不会阻止我的应用程序的其余响应。这项操作过于轻便和频繁,因此可以作为延迟的工作任务完成。

我正在考虑使用:

Thread.new do
  # my logging code
end

并称之为一天。这实现了我想要实现的目标吗?有什么缺点吗?

2 个答案:

答案 0 :(得分:1)

对于您的特定用途可能有些过分,但您是否考虑使用某种形式的消息队列中间件,如STOMP,AMQP,OpenWire甚至是Jabber?

基本大纲(伪代码!)将是:

s = client.create_connection(user,pass,server_ip,port)
s.message_send("Log Message Goes Here")

然后,您将在消息队列的另一端至少有一个“消费者”,它将日志消息写入文件/数据库/聊天室/ IRC频道/无论您想要什么 - 真的是全部 - 代码......:)

这也意味着,如果将来你想要交出高强度处理工作(例如发票),你就已经有了基础设施来实现这一目标。

此外,如果您正在寻找一个非常简单的Messaging服务器,我推荐RabbitMQ - 它是用Erlang编写的(但不要让它让你失望!)并且很容易设置。

这是我的第一篇文章,所以我不能发布任何超过两个链接,但我已经发布了上述所有技术的链接@ https://gist.github.com/1090372

答案 1 :(得分:0)

除了处理一些基线资源争用之外,这应该足够了。如果您在那里登录,则会想到数据库资源...如果您在那里登录,则会记住该文件。但我认为基本方法很好。更简单更好......