Mojolicious 中用于处理不同路径的全局变量和线程

2024-01-21

在我的 Mojolicious perl 代码中,我处理从远程客户端创建和监视的作业。

我将作业保存在哈希数组中,这是一个全局变量。

然后它在 PUT '/job/create' 和 GET '/job/status' 的处理程序中使用。 当使用 PUT '/job/create' 添加新作业时,数组得到 在子例程中扩展(它包含下面代码中的 4 个元素), 但是当通过 GET '/job/status' 请求作业状态时,列表 jobs,数组不包含添加的元素(计数为 2 元素)。

谢谢,简

这是代码:

#!/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();

这不会真正起作用,因为催眠蟾蜍 http://p3rl.org/hypnotoad使用 fork,而不是线程。我建议将数据存储在数据库或缓存::FastMmap http://p3rl.org/Cache::FastMmap.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mojolicious 中用于处理不同路径的全局变量和线程 的相关文章

  • perlbrew 可以在 Windows 上运行吗?

    使用 ActiveState 5 8 8Windows XP http en wikipedia org wiki Windows XP 我想安装更新的 Perl 进行测试 迁移 有一天 我们将不再以为自己只能使用一台计算机 当我想测试这类
  • 从 Perl 线程生成 Expect

    我正在编写一个脚本 该脚本需要定期 每 5 分钟 生成一个 Expect 进程来完成一些工作 下面是我的代码 它生成一个 Expect 进程并执行一些工作 脚本的主要进程始终在做一些其他工作 例如它可能等待用户输入 因为我在一个线程中调用这
  • 当我尝试在 PHP 中访问类变量时,类变量为 null

    好吧 这是我的主要代码 require checkpassword php require mysqllogininfo php Validate password if validatePassword GET password retu
  • 在 Perl 中组装 XML

    我需要对 NetApp 文件管理器进行 API 调用 我知道我需要发送什么原始 XML
  • Perl 构建、单元测试、代码覆盖率:一个完整​​的工作示例

    我找到的关于 Perl 构建过程 单元测试和代码覆盖率的大多数 Stackoverflow 答案都只是将我指向 CPAN 那里的文档 指向 CPAN 模块绝对没有任何问题 因为完整的文档应该位于此处 不过 在很多情况下 我很难找到完整的工作
  • Perl 中的 Fork 无法在从文件读取的 while 循环内工作

    我正在运行一个 while 循环来读取文件中的每一行 然后使用该行的数据将进程分叉给子进程 N 行之后 我想等待子进程结束并继续接下来的 N 行 等等 它看起来像这样 while w
  • Perl LWP::简单 HTTPS 错误

    我正在尝试获取网站的内容并打印 该代码按照我希望的方式在常规 HTTP 网站上运行 但它不适用于 HTTPS 我已经查找了此问题的修复程序 但它们在我的程序中不起作用 这是我目前拥有的代码 usr bin perl use strict u
  • Python 递归搜索带有嵌套键的字典

    我最近必须使用嵌套的字典 列表组合来解决实际数据系统中的问题 我为此工作了很长一段时间并提出了解决方案 但我非常不满意 我不得不求助于使用globals 和一个命名的临时全局参数 我不喜欢使用全局变量 这只是要求注入漏洞 我觉得必须有一种更
  • 更新命令行输出

    我的程序 碰巧是用 Perl 编写的 尽管我不认为这个问题是 Perl 特定的 在程序中的某一点输出状态消息 Progress x yy where x and yy是一个数字 例如 Progress 4 38 我想在打印新的状态消息时 覆
  • bash后台进程修改全局变量

    在我的 Bash 脚本中 我有一个全局变量foo设置为某个值和函数过程back func这是在后台运行的 我希望后台进程能够访问foo并修改其值 以便主进程可以看到变化 我的脚本的结构如下 bin bash foo 0 function b
  • 多维哈希排序 - Perl [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我真的需要一些帮助来理解这个哈希并对
  • 如何使用Python轻松地将变量扩展为字符串?

    这样做有什么好的习惯用法 代替 print s is a s s that s name adjective noun verb 我希望能够做一些事情来达到以下效果 print name is a adjective noun that v
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • 如何在类中使用常量类变量声明常量数组?

    如何在类中使用常量类变量声明常量数组 是否可以 我不想要动态数组 我的意思是这样的 class test const int size int array size public test size 50 int main test t 5
  • 未命名命名空间与全局声明

    使用未命名命名空间和全局声明有什么区别 使用这两个有什么特定的上下文吗 我们可以访问外部源文件中未命名的命名空间组件吗 未命名命名空间的要点是在翻译单元 源文件 内提供唯一的命名空间 而不需要显式前缀 这可以让您保证您的全局名称不会与其他翻
  • 单击按钮时,如何将数字存储在 html 表单输入中作为 javascript 变量? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 基本上我想做的是 当用户在 HTML 表单输入字段中输入一个数字 然后按下提交按钮时 该数字将存储在 JavaScript 变量中
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • Perl Tk 模块有哪些缺点?

    与在 Perl 中创建 GUI 的其他解决方案相比 Tk 模块有哪些缺点 我最近浏览了 Perl 的各种 gui 模块 这是我的总结 免责声明 最终我发现现有模块都不能满足我的需求 所以我开始编写自己的 gui 工具包 Tk 工作起来很不错
  • 如何确保我的代码永远不会直接退出?

    eval require file subsequent code goes here If file包含一个exit语句 后面的代码就没有机会运行 如何解决以便后续代码始终有机会运行eval已经完成了 中止是不可能的exit call f
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template

随机推荐

  • 现代硬件的算法?

    我再一次发现自己有一套不成立的假设 http queue acm org detail cfm id 1814327 该文章本身介绍了通过修改经过验证的最佳算法来解决虚拟内存问题 从而实现 10 倍的性能提升 在现代多问题 CPU 上 运行
  • 如何将 Bundle Config 添加到 Startup.cs 以便在 Razor 视图中使用资源?

    问题 如何向 Startup cs ASP NET Core 项目 添加与 App Start gt BundleConfig cs 相同的配置 当有 public class BundleConfig For more informati
  • 重新安装纱线时出现问题 - 代码:“MODULE_NOT_FOUND”

    Node js 版本 14 0 0 OS MacOS 10 15 4 范围 安装 代码 运行时 元 其他 纱线安装 模块 和版本 如果相关 内部 模块 cjs loader js 运行任何 Yarn 命令后 我收到以下错误 这是重新安装并执
  • 无法插入到 Supabase 中具有经过身份验证的角色策略的表

    我正在尝试在启用了 RLS 的表中插入一行Enable insert for authenticated users only政策已添加 不幸的是 即使我正确登录 我也无法插入 重现步骤 创建提交表 create table submiss
  • PHP 部分缓存

    我想部分缓存一些 php 文件 例如 所以缓存的页面应该像 缓存 php h1 This section is fixed today h1 div goodbye please visit todays suggested website
  • AppleScript 在 Finder 中设置目录路径

    我正在尝试通过 AppleScript 删除计算机上的文件 当我应用下面的代码时 似乎从桌面上删除了该文件 我想删除 Users andrew Documents 中的文件 下面是从桌面删除文件的代码 tell application Fi
  • 使用 Rspec 存根 File.open

    我正在尝试存根 File open 以测试读取 CSV 文件的方法 这是模型 class BatchTask def import filename CSV read filename row sep gt r col sep gt end
  • 适用于超大时间序列的最佳索引数据结构

    我想询问 SO 们关于用于索引时间序列 又名按列数据 又名平面线性 的最佳数据结构的意见 根据采样 离散化特征 存在两种基本类型的时间序列 常规离散化 每个样本都以共同频率采集 不规则离散化 任意时间点采样 需要的查询 时间范围 t0 t1
  • 泛型方法和方法重载

    方法重载允许我们定义许多具有相同名称但具有不同参数集的方法 因此具有相同的名称但不同的签名 这两个方法是否重载 class A public static void MyMethod
  • 找不到`SQLitePCLRaw.batteries_v2`

    我添加了一个sqlite net pclNuGet 包到 Xamarin iOS 项目 该应用程序以以下异常结束 找不到程序集引用的 SQLitePCLRaw batteries v2 SQLite net 版本 1 1 0 0 文化 中性
  • 从 .html 文件读取其内容的简单 Flask 应用程序。外部样式表被阻止?

    我制作了一个非常简单的 Flask 应用程序 它从 html 文件读取其内容 除了样式之外 该应用程序可以正常工作 奇怪的是 我的内联 CSS 代码可以工作 但外部样式表却不能工作 我已经检查过语法 它应该可以工作 Flask 是否会以某种
  • 如何编写可变参数模板递归函数?

    我正在尝试编写一个可变参数模板constexpr计算给定模板参数总和的函数 这是我的代码 template
  • 快速安全的加密算法 C#

    我正在寻找一种使用 C 实现的快速且安全的加密算法 我需要能够恢复初始消息 你有什么建议 感谢您的帮助 如果需要非对称加密 请使用 2048 位 RSA 如果您可以使用对称加密 请使用 256 位 AES MSDN 参考 系统 安全 密码学
  • 自动调整用户表单大小

    目标是一个可以自动调整大小以显示所有可见控件但没有额外死区的用户窗体 顶部始终可见 3 个组合框 但在其下方是 26 个标签及其关联的 5 个选项按钮 复选框 这 26 行将全部开始隐藏 并且仅在特定条件下可见 三个组合框中的第一个将说明
  • 如何使用 DataTemplates 通过 ViewModel-First 方法缓存动态切换的视图

    我在用GalaSoft MvvmLight框架 我的一些看法MainWindow xaml我通过用户选择在运行时动态地在它们之间切换 这些视图使用以下技术与其相应的视图模型绑定 主窗口 xaml
  • 如何将存储库镜像同步到新的上游存储库

    我有一个仓库镜像服务器 myrepo 最初是为了镜像而创建的 与远程同步 repoA 也就是说 我使用类似以下的内容来创建它 cd myrepo repo init u git repoA server manifest git mirro
  • RedHat Enterprise Linux 5.3 及以上版本不正确支持 sem_timedwait?

    我们在使用 pthreadsem timedwait 的 RedHat Enterprise Linux 系统上看到了奇怪的行为 仅 5 3 及以上版本才会出现此情况 当我们使用 sem init 在后台线程上创建信号量时 不会返回错误 当
  • Xcode 错误:缺少必需的模块“Firebase”

    问题 我有一个动态框架 它使用Firebase由 cocoapods 添加 我还有应用程序 它使用这个动态框架 但是当我尝试构建项目时出现错误Missing required module Firebase 我尝试了以下方法 删除派生数据
  • 持续监控前 X 个进程的 CPU 使用率

    我希望能够每 5 秒将最高 CPU 消耗者输出到日志文件 这样我就可以在测试期间看到谁使用了最多的 cpu 我发现这个答案很常见 cpu Get Counter ComputerName localhost Process Processo
  • Mojolicious 中用于处理不同路径的全局变量和线程

    在我的 Mojolicious perl 代码中 我处理从远程客户端创建和监视的作业 我将作业保存在哈希数组中 这是一个全局变量 然后它在 PUT job create 和 GET job status 的处理程序中使用 当使用 PUT j