TheSchwartz
為了想要建構一個Job Queue的系統,從好幾個月前就一直在看及思考怎樣的方案會比較好,後來因為手邊的程式大都數都以perl撰寫,所以就決定在perl的套件當中尋找。本來是想要利用proc-fork這類的套件去做實現,但是後來發現雖然這樣的套件很多,但是在工作submit出去之後,仍然沒有一個管理的機制去對排程的工作去做管理,而且怎樣去管理這些worker也是一個問題。
後來東看看西瞧瞧找到了這東西,這一兩個禮拜大概試出了一點東西,所以稍微紀錄。
安裝&基本跑法
大概的過程我全都寫在我的github上面,其實還滿簡單的
排程器
這邊我目前想到這樣做,先把要執行的工作包成一個worker,大概內容差不多如下
Loading ....
然後主要的程式如下Loading ....
接著如果是要在command line下操作,只要利用list_jobs這類的function就可以把目前正在執行的工作顯示出來,稍微可以達到我想要的工作監控的情形。接著在web端,我利用mojo寫一個簡單的程式去顯示目前正在跑的工作,大概類似下面15 get '/job' => sub {
16 my $self = shift;
17
18 my $client = TheSchwartz->new( databases =>
19 [{
20 dsn => $db_set->[0]{dsn},
21 user => $db_set->[0]{user},
22 pass => $db_set->[0]{pass}
23 }]
24 );
25
26 my @all = $client->list_jobs(
27 { funcname => ['Process2','Process1']}
28 );
29
30 $self->render('job', 'job' => \@all);
31 };
.
.
55 __DATA__
56 @@ job.html.ep
57 <!DOCTYPE html>
58 <html>
59 <body>
60 <h1>THis is Hello</h1>
61 The magic numbers are <%= $job %>
62 <ul>
63 % foreach my $j (@$job) {
64 <li><%= $j->jobid %></li>
65 % }
66 </ul>
67 </body>
68 </html>
其實還有像是gearman這樣很多人在用的工作排程器,只可惜他工作丟出去了我不曉得要怎樣管理執行狀況(或許是我沒看到也說不定),不然他在各種語言上都有實作,也是個很不錯的選擇。有看到另外一種用法是用gearman丟工作到TheSchwartz,不過我現在還不明白為何要這樣做的原因。
接著就是要寫網頁的控制端,先筆記一下mojo::template及wiki,之後可能還會花些時間k他的表示法。
About Me
- Unknown
Category List
- aircraft (1)
- Android (1)
- aviation (3)
- aws (1)
- biology (1)
- blogger (1)
- c++ (1)
- css (1)
- DBIx::Class (1)
- ds (1)
- english (6)
- git (1)
- google code (1)
- java (1)
- joe (1)
- json (1)
- language (1)
- livereload (1)
- math (1)
- mojolicious (1)
- murmur (1)
- neo4j (2)
- pdb (1)
- perl (10)
- personal (9)
- running (11)
- stock (1)
- sublime2 (2)
- swimming (1)
- talk (2)
- TheSchwartz (1)
- unicode (1)
- utf8 (1)
- web_design (1)
- work (1)
Followers
Total Pageviews
Labels
- aircraft (1)
- Android (1)
- aviation (3)
- aws (1)
- biology (1)
- blogger (1)
- c++ (1)
- css (1)
- DBIx::Class (1)
- ds (1)
- english (6)
- git (1)
- google code (1)
- java (1)
- joe (1)
- json (1)
- language (1)
- livereload (1)
- math (1)
- mojolicious (1)
- murmur (1)
- neo4j (2)
- pdb (1)
- perl (10)
- personal (9)
- running (11)
- stock (1)
- sublime2 (2)
- swimming (1)
- talk (2)
- TheSchwartz (1)
- unicode (1)
- utf8 (1)
- web_design (1)
- work (1)