【发布时间】:2013-01-04 05:57:03
【问题描述】:
我有一个运行良好的脚本,只是它随机生成新文件失败...
这是代码:
...
file_log_path = File.join(Rails.root, 'log', "xls_import_#{Time.now.to_i}.log")
@log = File.new(file_log_path, 'w+')
....
这是delayed_job.log中的错误
2012-12-21T18:18:41+0100: [Worker(delayed_job host:webserver2.netbanana.it pid:24482)] LoadDataFromCsv failed with Errno::ENOENT: No such file or directory - /var/www/rails/myapp/releases/20121210093945/log/xls_import_1356110321.log - 0 failed attempts
2012-12-21T18:18:41+0100: [Worker(delayed_job host:webserver2.netbanana.it pid:24482)] PERMANENTLY removing LoadDataFromCsv because of 1 consecutive failures.
其他时候,它有效!有人可以帮助我吗?
--编辑:
嗯...似乎 Rails.root 使用了错误的部署路径...实际上 /var/www/rails/myapp/releases/20121210093945 不存在。
但是,正如我所说,脚本有时有效,有时无效...如果我重新加载延迟作业,我的脚本会运行一些,然后开始失败。
【问题讨论】:
-
部署应用后确定该路径存在吗?您可能缺少
log目录。 -
好吧...delayed_job 似乎使用了错误的部署路径... /var/www/rails/myapp/releases/20121210093945 不存在。但是,正如我所说,脚本有时有效,有时无效……如果我重新加载延迟作业,我的脚本会运行一些,然后开始失败。
-
@MichDart 嗯,很明显,有时它不会。
-
我修改了我上面的评论。
-
你确定这不是某种竞争条件吗?您是否有不同的过程来读取和写入或创建这些日志?
Time.now.to_i使用 1 秒分辨率怎么样?你做某事的频率是否超过每秒一次?
标签: ruby delayed-job