最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Flask-RQ2如何循环不停止地调度运行某个函数任务

Flask crifan 3213浏览 0评论

之前已经实现了,通过Flask-RQ2,底层通过RQ库,实现任务的单次调度:

############################################################
# Flask-RQ2 related
############################################################
@rq.job
def updateUserStatus():
    # gUpdateLocationTimeDict
    return
# schedule job
notificationJob = updateUserStatus.schedule(
    gmtNotificationDatetime,
    eventId=newEvent.id,
    notifDatetimeGmt=gmtNotificationDatetime)
gLog.debug(“notificationJob=%s”, notificationJob)

即:

制定了任务的执行的时间,然后到期后,对应函数会被调用。

现在想要实现:

如何实现,不停止地,循环的,运行某个任务

Flask-RQ2 schedule non stop task

Flask-RQ2 redis queue non stop task

Flask-RQ2 redis queue periodic task

Flask-RQ2   periodic task

RQ: Documentation

web services – How to perform periodic task with Flask in Python – Stack Overflow

“Then using cron, download from that url periodically

# cron task to run each minute

0-59 * * * * run_task.sh”

-》好像是可以用cron的task,去实现:

循环的,不停止的任务

参考自己之前的:

[已解决]Flask中添加后台进程用于提醒到期时发送通知

和:

[已解决]Flask-RQ2+redis的后台进程不工作

才知道:

Python-RQ2是利用到了:

底层的RQ=Redis Queue

和在RQ至上添加了调度功能的:

rq-scheduler

所以感觉是:

对于想要添加任务,应该是:

去参考:

rq-scheduler

GitHub – ui/rq-scheduler: A light library that adds job scheduling capabilities to RQ (Redis Queue)

scheduler.schedule(
    scheduled_time=datetime.utcnow(), # Time for first execution, in UTC timezone
    func=func,                     # Function to be queued
    args=[arg1, arg2],             # Arguments passed into function when executed
    kwargs={‘foo’: ‘bar’},         # Keyword arguments passed into function when executed
    interval=60,                   # Time before the function is called again, in seconds
    repeat=10                      # Repeat this number of times (None means repeat forever)
)

-》所以想要无限循环的,不停止的任务,那就去:

设置repeat=0就可以了

-》对应的,想要停止,取消任务的话,调用:

scheduler.cancel(job)

-》估计底层是利用了redis的Delayed tasks

6.4.2 Delayed tasks

Flask-RQ2 — Flask-RQ2 16.1.1 documentation

-》可以写脚本,去调用对应的命令:

python manage.py rq –help

实现任务查看和管理

【总结】

根据目前的理解,想要通过Flask-RQ2去实现,间隔一定的时间,循环的,不间断的,不停止的,运行某个任务,

比如,每间隔5秒就执行运行该任务

具体的方式是:

############################################################
# Flask-RQ2 related
############################################################
@rq.job
def periodicFunction():
    # do your job
    return
# schedule periodic job
periodicJob = periodicFunction.schedule(timedelta(seconds=5), repeat=0)

待后续验证是否OK。好像是OK的。

转载请注明:在路上 » 【已解决】Flask-RQ2如何循环不停止地调度运行某个函数任务

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.185 seconds, using 22.13MB memory