问题描述
我正在使用 django-background-tasks 将数据从 API 读取到我的数据库中。 cronjob 每 15 分钟启动一次 python manage.py process_tasks
并处理队列中的作业。任务看起来像:
@background(schedule = 900)
def API_2_DB()
....
return None
现在是第一个问题: 那么,如何可靠地创建将在页面“未使用”时完成的任务?
第二个问题:数据库正在存储已完成的任务 - 我知道我可以在某处使用 CompletedTasks.objects.all().delete()
轻松删除它们 - 但是否没有内置的自动机制?
解决方法
由于我需要四处看看,而且 Stackoverflow 是我解决 django 相关问题的主要来源,所以我想我分享了我学到的知识,以防有人在这里寻找相同的问题:
在应用程序内的 task.py 中创建任务后,您可以定期调用该任务,而没有用户处于活动状态,从项目 urls.py
中调用它:
urls.py:
from django.contrib import admin
from django.urls import path,include
from django.views.generic.base import RedirectView
urlpatterns = [
path('home/',RedirectView.as_view(url='/')),path('admin/',admin.site.urls),path('',include('APPName.urls')),]
from APPName.tasks import API_2_DB
API_2_DB(repeat=100,repeat_until=None)