django-scheduler 在settings中配置jobstores
时间: 2024-02-01 12:14:24 浏览: 156
Django-scheduler是一个第三方库,它提供了一个任务调度器,可以在Django项目中轻松地安排和管理重复任务。在使用Django-scheduler时,你需要在项目的`settings.py`文件中配置jobstores。Jobstores是用来存储任务的地方,Django-scheduler支持以下几种jobstores:
1. `djangojobstore`: 使用Django的ORM存储任务信息。
2. `sqlalchemyjobstore`: 使用SQLAlchemy存储任务信息。
3. `mongodbjobstore`: 使用MongoDB存储任务信息。
4. `redisjobstore`: 使用Redis存储任务信息。
要配置jobstores,你需要在`settings.py`文件中添加以下代码:
```python
SCHEDULER_JOBSTORES = {
'default': {
'type': 'djangojobstore'
},
'mongo': {
'type': 'mongodbjobstore',
'database': 'scheduler',
'collection': 'jobs',
'host': 'localhost',
'port': 27017
},
'redis': {
'type': 'redisjobstore',
'host': 'localhost',
'port': 6379,
'password': '',
},
}
```
在上面的代码中,我们定义了三个jobstores: `'default'`,`'mongo'`和`'redis'`。`'default'`使用Django ORM作为jobstore,其他两个使用MongoDB和Redis作为jobstore。你可以根据需要添加或删除jobstores。
注意,如果你使用的是MongoDB或Redis作为jobstore,你需要安装相应的驱动程序。例如,如果你使用MongoDB,则需要安装`pymongo`库。
除了配置jobstores之外,你还需要在Django项目的`urls.py`文件中添加以下代码,以便Django-scheduler能够处理任务:
```python
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
from django_celery_beat.views import ConfigView, PeriodicTaskAddView, PeriodicTaskChangeView, PeriodicTaskDeleteView
urlpatterns = [
path('admin/django_celery_beat/',
csrf_exempt(ConfigView.as_view()), name='celerybeat-config'),
path('admin/django_celery_beat/add/',
csrf_exempt(PeriodicTaskAddView.as_view()), name='celerybeat-add'),
path('admin/django_celery_beat/<int:pk>/change/',
csrf_exempt(PeriodicTaskChangeView.as_view()), name='celerybeat-change'),
path('admin/django_celery_beat/<int:pk>/delete/',
csrf_exempt(PeriodicTaskDeleteView.as_view()), name='celerybeat-delete'),
]
```
这些URL将允许你在Django管理界面中添加、编辑和删除任务。
阅读全文