Prechádzať zdrojové kódy

Updates for mojolicious framework

* Updated mojolicious app to fix minor bugs
* Reduce graceful_timeout to release port more quickly
* use cpanfile for installation of deps
Joel Berger 11 rokov pred
rodič
commit
d0b91dec9d

+ 11 - 3
mojolicious/app.pl

@@ -11,6 +11,9 @@ plugin JSONConfig => {
   default => {
     database_host => 'localhost',
     workers => 8,
+    hypnotoad => {
+      graceful_timeout => 1,
+    },
   },
 };
 
@@ -31,7 +34,7 @@ helper render_json => sub { shift->render( data => encode_json(shift), format =>
 
 get '/json' => sub { shift->render_json({message => 'Hello, World!'}) };
 
-get '/db' => sub { shift->render_query(1) };
+get '/db' => sub { shift->render_query(1, {single => 1}) };
 
 get '/queries' => sub {
   my $c = shift;
@@ -50,7 +53,7 @@ get '/fortunes' => sub {
 
 get '/updates' => sub {
   my $c = shift;
-  $c->render_query(scalar $c->param('queries'), 1);
+  $c->render_query(scalar $c->param('queries'), {update => 1});
 };
 
 get '/plaintext' => sub { shift->render( text => 'Hello, World!' ) };
@@ -58,10 +61,14 @@ get '/plaintext' => sub { shift->render( text => 'Hello, World!' ) };
 # Additional helpers (shared code)
 
 helper 'render_query' => sub {
-  my ($self, $q, $update) = @_;
+  my ($self, $q, $args) = @_;
+  $args ||= {};
+  my $update = $args->{update};
+
   $self->render_later;
 
   $q = 1 unless looks_like_number($q);
+  $q = 1   if $q < 1;
   $q = 500 if $q > 500;
 
   my $r  = [];
@@ -69,6 +76,7 @@ helper 'render_query' => sub {
 
   my $delay = Mojo::IOLoop->delay;
   $delay->on(finish => sub{
+    $r = $r->[0] if $args->{single};
     $self->render_json($r) unless $tx->is_finished;
   });
 

+ 8 - 0
mojolicious/cpanfile

@@ -0,0 +1,8 @@
+requires 'Mojolicious';
+requires 'Mango';
+requires 'JSON::XS';
+requires 'EV';
+
+recommends 'IO::Socket::IP';
+recommends 'IO::Socket::SSL';
+

+ 2 - 2
mojolicious/install.sh

@@ -7,5 +7,5 @@ fw_get http://cpanmin.us -O cpanminus.pl
 echo Got cpanm
 perl-5.18/bin/perl cpanminus.pl --notest --no-man-page App::cpanminus
 echo installed cpanm
-perl-5.18/bin/cpanm --notest --no-man-page Mojolicious Mango
-echo installed mango
+perl-5.18/bin/cpanm --notest --no-man-page --installdeps ../mojolicious
+echo installed Mojolicious app dependencies

+ 0 - 39
mojolicious/nginx.conf

@@ -1,39 +0,0 @@
-user tfb;
-error_log stderr error;
-
-worker_processes 8;
-
-events {
-  worker_connections  1024;
-}
-
-http {
-  output_buffers   1 32k;
-  postpone_output  1460;
-
-  access_log       off;
-
-  sendfile         on;
-  tcp_nopush       on;
-
-  tcp_nodelay      on;
-
-  upstream backendurl {
-    server unix:/home/tfb/FrameworkBenchmarks/mojolicious/frameworks-benchmark.sock;
-  }
-
-  server {
-    listen 8080;
-    server_name localhost;
-
-    location / {
-      try_files $uri @proxy;
-      expires max;
-    }
-
-    location @proxy {
-      proxy_set_header Host $http_host;
-      proxy_pass http://backendurl;
-    }
-  }
-}

+ 9 - 7
mojolicious/setup.py

@@ -22,12 +22,14 @@ def start(args, logfile, errfile):
 def stop(logfile, errfile):
   try:
     subprocess.call("hypnotoad -s ./app.pl", shell=True, cwd="mojolicious", stderr=errfile, stdout=logfile)
-    p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
-    out, err = p.communicate()
-    for line in out.splitlines():
-      if 'hypnotoad' in line:
-        pid = int(line.split(None, 2)[1])
-        os.kill(pid, 15)
+    #p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
+    #out, err = p.communicate()
+    #for line in out.splitlines():
+    #  if 'hypnotoad' in line:
+    #    pid = int(line.split(None, 2)[1])
+    #    os.kill(pid, 15)
     return 0
-  except subprocess.CalledProcessError:
+  except subprocess.CalledProcessError as e:
+    print e
     return 1
+