让函数以随机时间间隔运行,web2py

时间:2015-02-04 21:41:34

标签: python time web2py

我正在制作一个程序,可以在一天中随机生成的时间发送随机短信。我首先在python中创建了我的程序,然后意识到如果我希望其他人注册接收消息,我将不得不使用某种在线框架。 (如果有人知道在python中使用我的代码的方法而不必更改它会令人惊讶,但是现在我一直在尝试使用web2py)我调查了调度程序,但它似乎没有做我的想法。如果有人知道是否有办法将时间值传递给函数并让它在那时运行,那就太好了。谢谢!

2 个答案:

答案 0 :(得分:0)

查看Apscheduler模块,了解python中类似cron的事件调度 - 在example中,它显示了如何安排一些python代码以cron方式运行。

虽然仍然不确定随机部分..

对于可能对您有吸引力的Web框架(看到您已经熟悉Python),您应该真正研究Django(或者只是使用WSGI来保持简单)。

最佳。

答案 1 :(得分:0)

我认为实际上你可以使用web2py的Scheduler和Tasks。我从来没有使用它;)但文档描述了一个任务的创建,您可以从代码中传递参数 - 所以您需要的东西 - 它应该可以满足您的需求:

scheduler.queue_task('mytask', start_time=myrandomtime)

所以你需要web2py的cron作业,每天都要运行并为每个要发送的消息发送类似于上面的代码(传递你需要的参数,可能是消息内容和电话号码,参见web2py书中的例子)。这将是日常创建的任务,稍后将由调度程序处理。

你也可以有一个更简单的解决方案,一个每日cron作业,它为第二天的随机时间准备消息队列,第二个每个运行一次,比如十分钟,检查等待处理的内容并发送消息。所以,没有任务。这种方式虽然有点难看(考虑单个处理需要10分钟以上)。您可能还希望拥有并检查要处理的消息的某些状态(如挂起,正在进行,已完成),以防止两个作业正在处理同一消息并允许跟踪处理进度的情况。无论如何,你可以在软件的早期版本中使用cron方法,然后用更好的方法替换它:)

在任何情况下,您都应该检查要处理的预期消息数以及目标平台上的平均处理时间 - 以确保所选方法足够快以满足您的需求。