是否可以使用 django-background-task 将函数置于定时循环中

Posted

技术标签:

【中文标题】是否可以使用 django-background-task 将函数置于定时循环中【英文标题】:Is it possible to put a function in timed loop using django-background-task 【发布时间】:2016-05-06 06:37:28 【问题描述】:

假设我想在不使用 cron 作业的情况下每 5 分钟执行一次函数。

我想做的是创建一个实际调用该函数的 django 后台任务,在该函数结束时,我再次使用 schedule = say 60*5 创建该任务。

这有效地将函数置于基于时间的循环中。

我尝试了几次迭代,但出现导入错误。但是能不能做呢?

【问题讨论】:

【参考方案1】:

不,在任何情况下都是不可能的,因为它会在 django 中有效地产生循环导入问题。因为在任务中您必须导入该函数,而在该函数的文件中,您必须导入任务。

所以无论你采取什么策略,你都会陷入同样的​​问题。

【讨论】:

【参考方案2】:

我做了类似的东西。你在找这个吗?

import threading
import time

def worker():
    """do your stuff"""
    return

threads = list()
while (true):
    time.sleep(300)
    t = threading.Thread(target=worker)
    threads.append(t)
    t.start()

【讨论】:

是的,这可能达到目的,我也可以通过设置 cron 作业来完成,但我实际上对创建带有后台任务的循环感到好奇 @Rohit。您正在使用线程,因此您可以使用并行处理。我的意思是,您可以将此循环称为来自另一个函数的线程。

以上是关于是否可以使用 django-background-task 将函数置于定时循环中的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 JavaScript 确定 GeoJSON 点是否在 GeoJSON 多边形内?

是否可以检查是否使用modernizr 启用了cookie?

是否可以使用 HTML/Javascript 按名称启动应用程序?

是否可以使用 jQuery 读取元标记

是否可以使用批处理文件检查两个文件是否共享相同的名称?

是否可以使用 INFORMATION_SCHEMA 模式来检查数据库是否存在?