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

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

我想要使​​用:

Thread.new do # my logging code end 

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

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

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

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

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

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

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

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

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