Tag: 延迟工作

使用axlsx在延迟作业方法中创建Excel

我试图在模型中的延迟作业方法中生成一个excel文件。 这在当地工作得很好。 我正在使用调度程序在heroku中运行延迟的作业。 乔布斯成功完成而没有生成excel。 我的延迟工作方法如下: def self.generate_excel Axlsx::Package.new do |p| p.workbook.add_worksheet(:name => “Stock Details”) do |sheet| sheet.add_row [“S.No”, “ProductId”, “Title”] products.each_with_index do |prods, index| sheet.add_row [“1”, “1234”, “product title”] end end p.serialize(“#{Rails.root}/app/views/stock_details/stock_details.xlsx”) end 我正在使用delayedjob 4.1。

如何重现/清理凌乱的POST参数以避免使用delayed_job的YAML序列化问题?

今天,每次我开始使用delayed_job工作者时,这个过程都会立刻死去。 经过一些调查(并找出有关delayed_job的前台模式),我终于发现问题是delayed_job序列化我的活动记录对象的方式是在YAML加载部分触发exception: Psych::SyntaxError: (): mapping keys are not allowed in this context at line 7 column 14 from /Users/mick/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych.rb:203:in `parse’ from /Users/mick/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych.rb:203:in `parse_stream’ from /Users/mick/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych.rb:151:in `parse’ from /Users/mick/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/psych.rb:127:in `load’ from /Users/mick/.rvm/gems/ruby-1.9.3-p448/gems/safe_yaml-0.9.7/lib/safe_yaml.rb:144:in `load_with_options’ from (irb):111 from /Users/mick/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.16/lib/rails/commands/console.rb:47:in `start’ from /Users/mick/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.16/lib/rails/commands/console.rb:8:in `start’ from /Users/mick/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.2.16/lib/rails/commands.rb:41:in `’ from script/rails:6:in `require’ from script/rails:6:in `’ 在delayed_job尝试时发生了这种情况: YAML.load(my_job.handler) ( 其他人在我面前有同样的问题 ) 找到有问题的Delayed::Backend::ActiveRecord::Job实例后,一个puts […]

如何处理Rails应用程序的长请求,以便其他用户不会延迟太多?

我在Heroku的免费套餐上有一个Rails应用程序,它最近开始吸引一些用户。 我的应用中的一个事件涉及查询另一个API,最多可能需要10秒才能完成。 如何确保同时访问简单页面的其他用户(作为另一个用户的API事件)不需要等待10秒才能加载其页面? 我需要支付更多的Dynos费用吗? 这是可以用delayed_job gem解决的吗? 另一台主机(如AppFog或OpenShift)是否能够更快地处理同步请求? 更新: 此问题建议手动处理线程而不是使用delayed_job。

YAML – TypeError:无法转储匿名模块

在application_controller的一个动作中,如果我们尝试: p request.env.to_yaml 我会收到这个错误: TypeError: can’t dump anonymous module: # from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:267:in `visit_Module’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:102:in `accept’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:447:in `block in dump_ivars’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:445:in `each’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:445:in `dump_ivars’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:124:in `visit_Object’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:102:in `accept’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:447:in `block in dump_ivars’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:445:in `each’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:445:in `dump_ivars’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:124:in `visit_Object’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:102:in `accept’ from /Users/twer/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:292:in `block in visit_Hash’ […]

delayed_job:NoMethodError

这是我的小Rails3控制器: class HomeController < ApplicationController def index HomeController.delay.do_stuff end def self.do_stuff puts "Hello" end end 访问index ,作业将正确插入数据库中: — !ruby/struct:Delayed::PerformableMethod object: !ruby/object:Class HomeController method_name: :do_stuff 问题:当执行bundle exec rake jobs:work ,我得到: Class#do_stuff failed with NoMethodError: undefined method `do_stuff’ for # 尽管HomeController.do_stuff工作得很好。 任何的想法?

Heroku和延迟工作 – 自动缩放分支 – RestClient :: ResourceNotFound

SomeController #update(RestClient :: ResourceNotFound)“找不到资源” 我在尝试使用DelayedJob的自动缩放分支排队延迟的作业时收到此错误(之前我没有)。 对于无自动缩放分支,这不会发生,但我无法确定问题所在。 如果有人经历过同样的事情或者可以指出我可能的原因,我会感激你的建议。

Rails:完全被delayed_job困扰。 在任何地方都没有收到

我正在尝试使用collectiveidea的delayed_job在Rails 3应用程序中发送邮件。 如果我尝试定期发送邮件(.deliver)它工作正常,但一旦我切换到延迟工作,事情就会崩溃。 我在delayed_job mysql表中得到的标准错误是: {undefined方法`name’代表nil:NilClass …… 其中’name’是邮件程序视图中的第一个参数(@ contact.name)。 如果我再次使用delayed_job,这可以正常工作。 如果我删除视图中对@contact的所有引用,我会得到 {发送邮件所需的发件人(Return-Path,Sender或From) 简而言之,它似乎根本不理解任何论据。 以下所有相关代码 – 如果有人对此有任何建议,将非常感谢 CONTROLLER def sendmail @contact = Contact.new(params[:contact]) if @contact.save ContactMailer.delay.contact_mail(@contact) flash[:notice] = ‘Your message has been successfully sent’ redirect_to root_path else render :action => ‘index’ end end MAILER: class ContactMailer “my@email.address” def contact_mail(contact) @contact = contact mail(:to => ‘my@email.address’, :subject […]

使用script / delay_job创建delayed_job worker时出现未定义的方法错误

运行多个工作人员时遇到一些问题。 使用rake jobs:work创建rake jobs:work即使多次调用rake jobs:work作业也没有问题,但是当使用ruby script/delayed_job -n 5 start all创建工作程序时, ruby script/delayed_job -n 5 start all作业都会在Syck::DomainType上使用未定义的方法失败。 我搜索了很多,但似乎无法找到解决方案。 我在Mongoid后端运行DelayedJob。 gem版本: 耙0.9.2 rails 3.0.6 延迟工作2.1.4 delayedjob_mongoid 1.0.2 有没有人遇到过类似的错误/有解决方案? 或者缺少一些关于为什么/如何创建工人的信息取决于调用它们的方式?

将delayed_job作为Windows服务运行

我试图让delayed_job作为Windows服务工作。 我完全厌倦了Windows,我甚至无法开始说话,但由于第三方的依赖性,我现在仍然坚持使用它。 运行rake jobs:work在控制台中启动工作者没有问题。 我创建了一个空的Windows服务来使用sc create DelayedJobWorker…来启动和关闭worker。 但是,我无法获得启动和停止工作的服务。 我不确定最好的方法是什么 – 我应该将服务参数化/要求它调用。 任何建议感激不尽。

如何在Rails上的开发中忽略延迟作业查询日志记录

我如何从log / development.log中静音/忽略这些延迟作业查询日志? Delayed::Backend::ActiveRecord::Job Load (1.0ms) UPDATE “delayed_jobs” SET locked_at = ‘2013-11-19 19:55:45.053991’, locked_by = ‘host:desktop-virtual pid:22277’ WHERE id IN (SELECT id FROM “delayed_jobs” WHERE ((run_at <= '2013-11-19 19:55:45.053435' AND (locked_at IS NULL OR locked_at < '2013-11-19 15:55:45.053519') OR locked_by = 'host:desktop-virtual pid:22277') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 […]