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

标签 python django asynchronous background-task

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

notify_user(user.id, repeat=<number of seconds>, repeat_until=<datetime or None>)

repeat is given in seconds. The following constants are provided: Task.NEVER (default), Task.HOURLY, Task.DAILY, Task.WEEKLY, Task.EVERY_2_WEEKS, Task.EVERY_4_WEEKS.

最佳答案

当您确实需要执行特定函数(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

执行程序
1. 请求到达 url,因此它会分派(dispatch)到相应的 View ,这里是 myview()2. 跨行get_csv(creds, repeat=100)然后创建一个 async task在 DB 中(它现在不会执行该功能)
3. 将 HTTP 响应返回给用户。
任务创建后 60 秒后,get_csv(creds)将在每个 100 seconds 中重复执行

关于python - 如何使用 Django 后台任务初始化重复任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536561/

相关文章:

asp.net - 从通用处理程序 (.ashx) 进行异步调用

python - 如何在 python 的数据框中找到最频繁的两列组合

django - 是否可以在 Django 中使用自然键作为 GenericForeignKey ?

Python 请求 - POST 需要隐藏输入吗?

ios - 使用 Twitter 在 iPhone 中登录用户并将经过身份验证的用户保存到远程 Django 应用程序

javascript - 如何使用 jquery 在 Django 中提供图像

java - 从 DB 推送到 Java 客户端的数据异步连续轮询

ios - 从 web 服务下载异步数据并存储在核心数据中的最佳方法

python - django - 将参数从模板传递到 models.py 的函数

python - 如何在随机点云上拟合点网格