0

我有一个 Rails 应用程序和一些要生成的巨大 xlsx 文件,虽然 axlsx_rails 在生成这些文件时效果很好,但是当行数超过 60000 时,要等很长时间才能弹出下载窗口。

有人建议我使用delayed_job。作为一个初学者,当你有一个调用`.delay`的方法时,我几乎不明白delayed_job是如何以“正常”方式工作的,但在这种情况下,gem会完成所有工作,所以我怎么能把它放在延迟的工作上? 或者换句话说,我应该怎么称呼`.delay`?

我的 axlsx_rails 的整个实现是按照以下教程完成的: https ://www.sitepoint.com/generate-excel-spreadsheets-rails-axlsx-gem/

4

1 回答 1

0

他们很可能打算使用 ActiveJob。你可以在这里找到它的文档:

http://edgeguides.rubyonrails.org/active_job_basics.html

如果您使用的是 Rails 5.x,则可以通过将其放在 application.rb 配置文件中来使用异步队列适配器:

config.active_job.queue_adapter = :async

如果您使用的是 Rails 4.x,您将需要使用作业后端来执行异步任务,例如 sidekiq:

https://github.com/mperham/sidekiq/wiki/Active-Job

Sidekiq 还将要求您安装 Redis 来存储作业:

https://github.com/mperham/sidekiq/wiki/Using-Redis

这是构建和配置 Redis 的指南:

https://redis.io/topics/quickstart

感兴趣的部分是“更正确地安装 Redis”,尽管您可以按照此处下载页面上的说明绕过很多手动工作:

https://redis.io/下载

运行 make 后,utils 文件夹有一个安装脚本,您可以运行它,它将为您完成快速入门指南中的所有设置,除了将可执行文件复制到您的 /usr/local/bin 目录。

于 2017-02-22T15:15:31.680 回答