问题标签 [plack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
140 浏览

perl - 在 perl plack 中调用子程序不返回任何内容

我是 perl plack/psgi 的新手。我想在 perl plack/psgi 循环中访问一个子例程,但看起来如果子例程没有被执行。每个像 $number 这样的父变量都应该像编写常规 perl 脚本一样自动传递。我在这里想念什么吗,这可能吗?

返回 10 而不是 20 :(

0 投票
1 回答
175 浏览

perl - 与 PSGI/Dancer 堆栈相关的 Nginx 单元

根据Nginx 的说法,它超越了它的服务器根并启动了它的应用程序平台

..Unit 是一个现代应用服务器,用于用 PHP、Python 和 Go 编写的应用程序(支持 node.js、Java、Ruby Perl 和其他即将推出的),在动态环境中运行。

Unit 在哪里适合 ngnix->PSGI->Starman->Dancer 堆栈?它取代或增加了哪个部分?

0 投票
1 回答
236 浏览

dancer - 如何停止弹夹

我是第一次尝试开发网页,所以请多多包涵。我正在按照这里解释的教程 - https://metacpan.org/pod/distribution/Dancer2/lib/Dancer2/Tutorial.pod

我运行了 plackup 以使用plackup app.psgi. 当我加载 localhost:5000 时,我看到网页缺少一些字段,所以我停止使用Ctrl+Z.

现在当我使用时plackup app.psgi,我得到了错误-

当我转到 localhost:5000 时,页面显示它正在加载,但没有出现任何内容。

我如何优雅地关闭/退出装弹?有没有其他方法可以启动和停止 Dancer2 应用程序?

0 投票
1 回答
90 浏览

perl - 如何处理 plack 延迟响应中的错误

试图处理延迟响应中的错误。

每次我发送 [200, [ 'Content-Type', 'application/json' ] 并在刷新其他类似的东西之前出错

$w->write("我的数据");

$w->close();

我在标准输出中收到警告,在标准错误中收到错误,但页面仍在加载。

它将一直加载,直到我停止应用程序或手动停止页面加载。

我如何停止在代码中加载页面或如何正确处理我使用延迟响应的此类应用程序中的错误?

Perl 版本 5.24 Kelp 版本 1.02 使用 Corona 运行 Plack。

我们正在处理抛出 Exception::Class 的错误。使用 Try::Tiny 捕获错误。

还尝试了 eval 和其他东西,但它不起作用。但是更改了 Try::Tiny -> TryCatc 并在出现任何错误时返回,但我需要为每个 catch 块写返回,它看起来很糟糕

我正在寻找正确的错误处理,我需要 try{} catch{}; 在每个可能失败的代码上?

感谢@ikegami 的回答,但在尝试使用 Object::Destoyer 和 Sub::ScopeFinalizer 后页面仍然加载。据我了解 $w(writer) 不会导致页面加载。退出范围后, $w 来到 undef 然后没有什么可以关闭的,这里是代码。

所以我想出了这个解决方案,你怎么看?

0 投票
0 回答
79 浏览

perl - 在进程之间共享和修改 PSGI 中的变量

我们有一个使用多进程和多线程的 UWSGI 的 PSGI 脚本,寻找一种快速的解决方案来在这些处理的线程和线程之间共享可编辑的哈希。我使用 Cache::Memcached::Fast 和 Redis 等内存存储进行了测试。

与仅使用语言环境哈希相比,有快但不够快

在我们的测试中,速度提高了 10 倍。有没有办法在运行时共享和编辑变量——比如有一种本地散列场景——例如进程 1 正在更新

并且进程 2 也具有 $hash{$id} 的新值?

我还尝试了 IPC::Shareable、MCE::Shared::Minidb 或 threads::shared (threads::shared: 段内存限制),它们确实适用于 PSGI。

有没有办法在同一台机器上的所有进程之间共享 FAST - 可编辑 - 局部变量?

0 投票
0 回答
69 浏览

perl - PSGI 脚本中的“Cronjob”

我有一个使用 plack 构建器的 PSGI 脚本,该脚本通过生成多个进程使用 uwgsi 执行。我必须使用数据库调用每分钟刷新一次内部哈希。是否有可能独立于外部进程/工作人员执行,在每个给定的时间间隔执行一些代码行?

0 投票
1 回答
219 浏览

perl - 如何编写在 HTTP 响应发送到客户端后运行的 Plack 中间件?

我的 Plack Web 服务通过与 fluentD 的 TCP 连接进行日志记录,我想在将响应发送回客户端后执行我的日志记录代码。这将减少响应时间(假设这是一个高请求量服务,值得进行这种性能优化)。

至少有一个其他的 web 框架,用于 nodejs,通过允许中间件向请求对象添加一个端事件处理程序来支持这一点。我查看了Plack::RequestPlack::Response接口,但没有看到类似的事件挂钩。

我想我可能会在我的中间件中对finalize方法进行本地覆盖,以强制框架在响应完成后进行日志记录,但如果可能的话,我想避免修改 Plack 内部。

是否有更好的方法可以将某些代码的执行推迟到向客户端发送响应之后?

0 投票
1 回答
42 浏览

apache - 如何在 Plack/Apache 中拦截回复

给定以下处理程序(直接来自 https://metacpan.org/pod/Plack::Handler::Apache2

app作为一个黑匣子,有没有办法以某种方式检索生成的完整响应?我想在标有的行中执行此操作#(2)并获取标题和正文。理想情况下,我会做一些神奇的事情,#(1)并以某种方式强制$r存储响应(然后在 中检索它#(2))。

0 投票
1 回答
62 浏览

perl - 如何更改 Plack 会话的名称?

我在同一个域上有两个应用程序,但是每次用户登录时它们都会创建一个 plack_session。这是因为应用程序 A 覆盖了应用程序 B 的 plack 会话。

删除其中一个并让它们使用由中央应用程序创建的一个是一个复杂的过程,但是现在,我如何将这些“plack_session”名称中的一个更改为“plack_session2”之类的名称,以便他们看不到每个其他?

我什至不知道这是否可能。

这是 Plack Session 的文档,但我在这里看不到任何可以帮助我的东西。

0 投票
1 回答
91 浏览

perl - 如何在由 plackup 执行的 Perl Dancer App 中传递命令行选项

如果我想启动一个 Perl Dancer 应用程序,我必须运行以下命令:

如果我想将一个选项传递给应用程序并从@ARGV 在脚本中访问它,我可以这样做:

我也可以使用“plackup”来运行这个应用程序,但是我不能像使用 Perl 运行脚本时那样传递选项。@ARGV 参数数组为空。

我能做些什么?如何将命令行选项传递给从“plackup”开始的“app.psgi”脚本?

以下是该脚本的大致外观文件: