之前已经实现了,通过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
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,去实现:
循环的,不停止的任务
参考自己之前的:
和:
才知道:
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
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如何循环不停止地调度运行某个函数任务