django的简单后台任务
django-workers的Python项目详细描述
Django工人
一个简单的后台任务工作器,使用django数据库和管理员进行管理。这个 该项目是为中小型用途。如果你需要更多的东西,看看芹菜。
安装
下载软件包
pip install django-workers
并将其添加到Django安装的应用程序中
INSTALLED_APPS=[# ...'workers',# ...]
基本知识
在django应用程序中创建一个tasks.py
文件,您希望在其中包含任务。这些任务将自动
由于自动发现而变得可用。
fromworkersimporttask@task()defsay_hello(name):print('Howdy',name)
呼叫任务
任务变为简单的python可调用。调用它们会将该任务插入django数据库并 等工人来拿。
say_hello('Foo')# Sent to background automatically
管理工人
现在启动你的工人来处理一些数据。工作人员在数据库中轮询应执行的新任务 从事。
python manage.py runworkers
计划任务
有时您希望每x秒或以后运行一个特定任务。这是预定的 任务是为了。
重复计划任务
以秒为单位的计划指定的任务将重复。
fromworkersimporttask@task(schedule=10)defdo_something():print('I run every 10 seconds')@task(schedule=60*5)defdo_something_later():print('I run every 5 minutes')@task(schedule=60*60*8)defdo_something_even_later():print('I run every 8 hours')
计划任务的日期
通过传递一个_schedule=<datetime>
参数,可以将任务安排在以后运行一次
当任务被调用时。
fromdatetimeimportdatetime,timedeltafromworkersimporttasktrial_end_date=datetime.utcnow()+timedelta(days=14)@task()deftrial_ending():send_email('Your trial is ending!')# Specifying the `schedule` argument will tell the worker when this task should runtrial_ending(_schedule=trial_end_date)
设置
您可以选择在djangosettings.py
文件中覆盖这些设置:
WORKERS_SLEEP
(默认值5)-在检查任务之前等待几秒钟,如果未找到任务WORKERS_PURGE
(默认值1000)-要在管理员中保存多少最近的任务日志
TOdo(不工作)
WORKERS_TIMEOUT
(默认值30)-任务在终止前可以运行的秒数WORKERS_RETRY
(默认3)-放弃前的重试次数WORKERS_CONCURRENCY
(默认值1)-要运行的工作进程数