如何使用 Django 后台任务初始化重复任务?

Aze*_*eem 6 django asynchronous python-3.x background-task

我正在开发一个 django 应用程序,它从 Dropbox 读取 csv 文件,解析数据并将其存储在数据库中。为此,我需要后台任务来检查文件是否被修改或更改(更新),然后更新数据库。我试过“芹菜”,但未能用 django 配置它。然后我发现django-background-tasks比 celery 配置要简单得多。我的问题是如何初始化重复任务?
它在文档中有所描述, 但我找不到任何示例来解释如何使用repeatrepeat_until或文档中提到的其他常量。
任何人都可以用例子解释以下内容吗?

notify_user(user.id, repeat=<number of seconds>, repeat_until=<datetime or None>)
Run Code Online (Sandbox Code Playgroud)


重复以秒为单位给出。提供了以下常量:Task.NEVER(默认)、Task.HOURLY、Task.DAILY、Task.WEEKLY、Task.EVERY_2_WEEKS、Task.EVERY_4_WEEKS。

JPG*_*JPG 4

notify_user()当你确实需要执行特定的函数()时,你必须调用它。
假设您需要在请求到达服务器时执行任务,那么它会是这样的,

@background(schedule=60)
def get_csv(creds):
    #read csv from drop box with credentials, "creds"
    #then update the DB

def myview(request):
    # do something with my view
    get_csv(creds, repeat=100)
    return SomeHttpResponse
Run Code Online (Sandbox Code Playgroud)


执行过程
1. 请求到达 url,因此它将分派到相应的视图,此处myview()
2. 执行该行get_csv(creds, repeat=100),然后async task在 DB 中创建一个(现在不会执行该函数)
3. 将 HTTP 响应返回给用户。

任务创建后60秒后,get_csv(creds)会在每次任务中重复执行100 seconds