Aze*_*eem 6 django asynchronous python-3.x background-task
我正在开发一个 django 应用程序,它从 Dropbox 读取 csv 文件,解析数据并将其存储在数据库中。为此,我需要后台任务来检查文件是否被修改或更改(更新),然后更新数据库。我试过“芹菜”,但未能用 django 配置它。然后我发现django-background-tasks比 celery 配置要简单得多。我的问题是如何初始化重复任务?
它在文档中有所描述,
但我找不到任何示例来解释如何使用repeat、repeat_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。
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
| 归档时间: |
|
| 查看次数: |
5387 次 |
| 最近记录: |