【发布时间】:2018-01-19 15:31:24
【问题描述】:
我正在尝试处理大文件上传
Mojolicious::Plugin::Minion
以便我可以快速响应用户或 REST API 调用者。
# app start up
sub startup {
...
$self->minion->add_task(upload_file => sub {
my ($job, $file) = @_;
my $filename = $file->filename;
});
...
}
# Controller:
sub upload_file {
my $c = shift;
$c->openapi->valid_input or return;
# curl -k -F name=test -F filepath=@/tmp/test.txt http://endpoint-to-uplod_file
my $id = $c->minion->enqueue(upload_file => [$c->param('filepath')]);
return $c->render(openapi => {
message => q|request to upload file has been received Successfully.
This File will be zipped, encrypted and finally transferred to cloud.|,
statuscheck_endpoint => "uploadStatus/$id",
jobid => $id
});
}
看起来奴才没有得到对象。我收到以下错误
无法通过包“Mojo::Upload=HASH(0x34451d0)”定位对象方法“filename”(可能您忘记加载“Mojo::Upload=HASH(0x34451d)”
鉴于 minion 作业作为子进程运行,这种 IPC 甚至可能吗?
请帮助我理解。我认为,在文件上传之前,服务器和客户端都在忙于传输文件数据,即使 minion 可以处理,服务器也无法发回响应。
【问题讨论】:
-
小文件上传有用吗?
-
没有。它不起作用。
标签: perl mojolicious