5
私のMojolicious perlコードでは、リモートクライアントから作成され、監視されたジョブを処理します。異なるパスを扱うためのMojoliciousのグローバルとスレッド
グローバル変数であるハッシュの配列にジョブを保存します。
PUT '/ job/create'とGET '/ job/status'のハンドラで使用されます。 PUT '/ job/create'で新しいジョブを追加するとき、配列は をサブルーチン(このコードには4つの要素が含まれています)の に拡張しますが、GET '/ job/status' ジョブのリストには、配列に追加された要素が含まれていません(2 要素)。
おかげで、月
はここのコードです:hypnotoadスレッド、フォークを使用していないよう
#!/usr/bin/perl -w
use threads;
use threads::shared;
use Mojolicious::Lite;
use Mojo::JSON;
my (%record, %job1, %job2, %job3, @jobs) : shared;
%job1 = (id=>"id1");
%job2 = (id=>"id2");
%job3 = (id=>"id3");
push (@jobs, \%job1);
push (@jobs, \%job2);
app->config(hypnotoad => {listen => ['http://*:3000']});
put '/job/create' => sub {
my $self = shift;
my $obj = Mojo::JSON->decode($self->req->body);
my $id = $obj->{id};
%record = (id => $id);
push (@jobs, \%record); # test the global prefilled
push (@jobs, \%job3); # test the global locally filled
$self->render(text => "Created job id $id. Jobs count: " .
$#jobs);
};
get '/job/status' => sub {
my $self = shift;
my $out = "[";
for(my $i=0; $i<$#jobs+1; $i++) {
$out .= "{id:\"" . $jobs[$i]{id} . "\",";
$out .= "," if $i<$#jobs;
}
$out .= "]";
$self->render(text => "allJobsInfo($out). Num jobs: " . $#jobs);
};
app->start();
ありがとうございました。最後に、私はCouchDBで解決策に移りました。かなり良いbtwに見えます。 :) –
代わりの 'perl your.appデーモン-l 'http:// *:3000''も働くことができます。 [ビルトインWebサーバー](http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Built2Din_web_server) – klekker