我在延迟的工作中添加pdf生成任务,如下所示
@employe.each do |em|
em.details.each do |detail|
Delayed::Job.enqueue GeneratePdf.new(detail)
end
end
这样可以正常工作,但需要2分钟才能遍历所有雇员及其详细信息并完成请求。
我怎样才能减少这段时间?或者我如何添加循环延迟作业。我目前生成pdf类
class GeneratePdf < Struct.new(:detail)
def perform
filename = detail.id.to_s
pdf = EmployeDetailsPdf.new(detail) #this generates a pdf
pdf.render_file(filename + ".pdf")
end
end
答案 0 :(得分:2)
首先,我假设您的struct coord *read_init(FILE *fp, int *n){
//...
char *line;
//...
for(int i = 0; i<(*n); i++) {
read_line(fp, line, MAX_COORDINATE_SIZE);
coords[i] = read_coords(line); //Put coordinates in coords
line = '\0'; // <<--- you set line to NULL here.
*line = 0; // this is what you wanted to do, is not necessary...
}
// ....
}
变量应该被称为@employe
并且只存储:几名员工
您通常只应将对象的ID传递给作业。该作业将查询数据库以检索该员工。如果需要更长的时间并不重要,那就是这里的工作。
就像那样,你将主要的工作量传递给工作:
@employees