- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
转帖:http://perlmonks.org/?node_id=1191821
考虑app.psgi
:
#!perl
use 5.024;
use strictures;
use Time::HiRes qw(sleep);
sub mock_connect {
my $how_long_it_takes = 3 + rand;
sleep $how_long_it_takes;
return $how_long_it_takes;
}
sub main {
state $db_handle = mock_connect($dsn);
return sub { [200, [], ["connect took $db_handle seconds\n"]] };
}
my $dsn = 'dbi:blahblah'; # from config file
my $app = main($dsn);
plackup
(
HTTP::Server::PSGI: Accepting connections at http://0:5000/
):
› perl -MBenchmark=timeit,timestr,:hireswallclock -E"say timestr timeit 10, sub { system q(curl http://localhost:5000) }"
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
connect took 3.0299610154043 seconds
2.93921 wallclock secs ( 0.03 usr + 0.06 sys = 0.09 CPU) @ 107.53/s (n=10)
thrall
(
Starting Thrall/0.0305 (MSWin32) http server listening at port 5000
):
› perl -MBenchmark=timeit,timestr,:hireswallclock -E"say timestr timeit 10, sub { system q(curl http://localhost:5000) }"
connect took 3.77111188120125 seconds
connect took 3.15455510265111 seconds
connect took 3.77111188120125 seconds
connect took 3.15455510265111 seconds
connect took 3.77111188120125 seconds
connect took 3.64333342488772 seconds
connect took 3.15455510265111 seconds
connect took 3.77111188120125 seconds
connect took 3.85268922343767 seconds
connect took 3.64333342488772 seconds
17.4764 wallclock secs ( 0.02 usr + 0.09 sys = 0.11 CPU) @ 90.91/s (n=10)
state
多变的。你是怎么做到的,所以它只发生一次?
最佳答案
无论出于何种原因,程序 thrall
在其配置部分硬编码一个“loader”参数:
my $runner = Plack::Runner->new(
server => 'Thrall',
env => 'deployment',
loader => 'Delayed',
version_cb => \&version,
);
$runner->parse_options(@ARGV);
"Delayed"
指模块
Plack::Loader::Delayed
,这会延迟 .psgi 文件的加载,直到第一个请求到来。这将符合您的基准测试结果。 (如果您在不杀死 thrall 的情况下再次运行基准测试,您将看到相同的输出)。
thrall -L +Plack::Loader app.psgi
,它将“loader”参数恢复为硬编码在
Plack::Runner
中的默认值.
关于multithreading - 如何让 PSGI 程序每个进程而不是每个线程只进行一次昂贵的初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44257530/
过去和现在的常规部署对我来说如下所示: +------------------+ +---------+ tcp +-------+ tcp | PSGI Application |----o
PSGI specification将 HTTP 响应定义为由三部分组成,其中第三部分可以是数组引用或文件句柄。文件句柄可能是: An IO::Handle-like object or a buil
我正在练习 Perl 和 PSGI/Plack。只是尝试简单的 PSGI 示例应用程序: 应用程序.psgi #!/usr/bin/perl my $counter = 0; my $app = su
尽管文档相当少且不明确,并且对于初学者来说是一个有效的 How-To,但我已经成长为喜欢 PSGI 并且目前正在我的一个应用程序中使用它。我想知道的是如何管理跨多节点应用程序的日志记录?关于登录 PS
转帖:http://perlmonks.org/?node_id=1191821 考虑app.psgi : #!perl use 5.024; use strictures; use Time::Hi
我一直在尝试确定我的 Web 项目是否适合使用 PSGI 实现,但现阶段我并没有真正看到它对我的应用程序有什么好处。 我真的不明白这些大惊小怪的事情。对我来说,PSGI 似乎是一个框架,它在不同的 A
在 CPAN 中,我只找到了名为 Handel 的购物车解决方案。这还不错,但我正在寻找基于 Moose 的购物车。 两个问题: 这里有什么 Moose-cart 包裹吗? 或者更好的是,这里有任何用
我有一个小的 PSGI 应用程序,它从表单中上传数据并将其传递给另一个脚本进行处理: #!/usr/bin/perl use strict; use warnings; use Plack::Requ
当我向 dumper $env 发出请求时,我得到了环境哈希 psgi 的所有数据,在这个例子中 sub { my $env = shift; return [ 200, [], [ $en
我计划使用 PSGI/Plack 开发一个 Web 应用程序。 (可能与舞者,但尚未决定)。 应用程序应该是 utf8、多语言(使用 Locale::Maketext)并且 (ofc) 将包含一些给定
我对 FCGI 协议(protocol)的了解是,第一次调用应用程序时,它会将其加载到内存中,运行它,将响应返回给服务器,完成响应但不结束应用程序,它会保持运行在内存中,然后下一个请求将使用这个在内存
我开始看 PSGI,我知道应用程序的响应应该是一个数组 三个元素的引用,[代码,标题,正文]: #!/usr/bin/perl my $app = sub { my $env = shift;
我想使用 Plack 部署一个在 Apache2 中运行的 PSGI 脚本。 Apache 配置: SetHandler perl-script PerlResponseHandler Pl
我已经竭尽全力在网络上找到这个问题的答案。我正在尝试在 Windows 上安装 mod_perl,但有很多死胡同。 mod_perl 就是我要找的吗?*** 我有一组网络应用程序在我公司的本地网络中用
我习惯于在 Apache httpd.conf 中为不同的目录设置别名。例如,以下对我有用 Alias /lib /path/to/lib 然后我可以包含诸如 之类的路径无论申请路径如何。 我正在试
我有一些代码,如下所示: use SomeApp; use Test::WWW::Mechanize::PSGI;
我需要构建一个简单的网络应用程序。我决定用Poet来做到这一点( Mason2 ),它使用 Plack。 应用程序应该只允许经过身份验证的用户使用,因此我需要构建一些登录/密码功能。 已经有一个 Pl
我有这样一个问题 - 在 PSGI/Plack 应用程序中 fork 的正确方法是什么? 一方面,我知道 PSGI 应用程序是“后端不可知的”,因此它可以使用不同的方法运行 - FastCGI、CGI
如何一起运行:PSGI 和 PHP? 我有 Perl/PSGI 应用程序(在纯 perl Starman 服务器下运行)。现在,出于某种原因也需要运行一个 PHP 应用程序;(,所以(可能)需要 Ap
我有一个用于 Catalyst/PSGI 网站的 large 测试套件,运行大约需要 40 多分钟。我已经将它切换为使用聚合测试,使用 Test::Aggregate::Nested ,现在运行大约需
我是一名优秀的程序员,十分优秀!