 <p>I just ran this code in a brand new Rails app with Delayed::Job installed (modified from what you provided):</p> <pre><code>class List attr_accessor :id end @list = List.new @list.id = 123 class ImportContact def initialize(list_id, csv_text) @list_id = list_id @csv_text = csv_text end def perform puts @list_id puts @csv_text.length end end csv_text = IO.read('test_2000_import_contacts.csv', :encoding =&gt; 'UTF-8').gsub(" ", "") csv_text = csv_text.gsub("\n\n", "\n") Delayed::Job.enqueue ImportContact.new(@list.id, csv_text), :queue =&gt; "import-list-#{@list.id}" </code></pre> <p>When I ran <code>bundle exec rake jobs:work</code>, everything went through correctly, which would lead me to believe that there is a problem with the way YAML is encoding or decoding the file you are importing.</p> <p>In particular, I would run</p> <pre><code>yaml = Delayed::Job.find(121).handler File.open('job-121.yml', 'w') { |f| f.write(yaml) } </code></pre> <p>And check through the file around <code>line 6709 column 4</code>.</p> <p>However, this might be about the time to suggest that you store your files in something like S3 and pass a URL to the <code>ImportContact</code> worker rather than the entire CSV text. This will alleviate the current problem you are running into and help you avoid bloating your database with huge text columns.</p>