Lua中,如何控制时间的延迟

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua中,如何控制时间的延迟相关的知识,希望对你有一定的参考价值。

比如,从1到十,每1秒输出一个值?

os库 调用时间函数 取秒
local n,s,s0 = 0
while true do
s = os.date("%s", os.time());
if s0 ~= s then
n = n + 1;
print("this is the "..n.." seceod");
end;
if n == 10 then
break;
end;
end;
参考技术A 这个,好像标准库里还真没有。不过自己写个扩展库,或者用alien库也可以。 参考技术B 少一句 s0 = s;

如何调试在 IRB 控制台中的延迟作业任务中运行的代码?

【中文标题】如何调试在 IRB 控制台中的延迟作业任务中运行的代码?【英文标题】:How can I debug code running in a delayed_job task in the IRB console? 【发布时间】:2013-08-10 22:18:29 【问题描述】:

我有一个使用delayed_job 运行的后台任务。

我可以看到它确实从日志记录语句中运行。与在前台运行相比,它似乎没有正确的结果,所以我想在 IRB 控制台中对其进行调试。

我正在运行后台任务

rake jobs:work

并且它不会触发调试器语句。

如何加载调试器?

【问题讨论】:

【参考方案1】:

启动一个标准的 Rails 控制台

ruby script/console

并在这里启动一个worker,这将看到并触发调试器语句。

worker = Delayed::Worker.new
worker.start

【讨论】:

延迟::Worker.new.start bundle exec rails runner "Delayed::Worker.new.start" 这太棒了。一直以来,我都对使用延迟作业的控制台输出一无所知。谢谢!【参考方案2】:

我使用 pry 作为我的控制台和远程调试器。 Pry website here,Pry rails gem here。在您的代码中,您添加 binding.pry 语句以使您的应用程序停止执行并打开控制台。 delay_job 的工作原理与您的 rails 应用程序相同。确保您在前台运行延迟作业,因此它仍然连接到终端。例如,使用以下命令启动延迟作业:

rake jobs:work

【讨论】:

实际上值得注意的是,如果您在运行队列之后添加了断点(binding.pry 指令),那么您必须首先停止并重新启动队列rake jobs:work 以便考虑断点

以上是关于Lua中,如何控制时间的延迟的主要内容,如果未能解决你的问题,请参考以下文章

Lua 程序延迟

在 LUA for 循环的迭代之间应用延迟

如何在Python中进行时间延迟[重复]

如何延迟 Rails 控制器操作,直到 Stripe 的 webhook 成功?

如何绘制延迟环节的n图

如何为 Rails 控制器添加延迟以进行测试?