Dus*_*tin 11 django celery django-celery celerybeat
我希望能够以编程方式生成celerybeat条目并在添加条目时重新同步celerybeat.这里的文档陈述
默认情况下,条目取自CELERYBEAT_SCHEDULE设置,但也可以使用自定义存储,例如将条目存储在SQL数据库中.
所以我想弄清楚我需要扩展哪些类才能做到这一点.
我一直在研究芹菜调度程序文档和djcelery api文档,但是关于这些方法中的一些方法所做的文档是不存在的,所以即将潜入某些来源并且只是希望有人可以指出我正确的方向.
我想我正在做的高水平会有所帮助......作为一个用户,我需要能够从一组预定义的任务中进行选择,并为用户提供一种方法来为其选择某种自定义时间表.执行,像每天/每周/每月,什么日期和时间.
这也是Django与djcelery.
UPDATE
我看到djcelery管理员的代码,但不清楚数据是如何持久化的.我目前有一个通用addTask
视图,如下所示:
def addTask(request):
intervalSchedule = IntervalSchedule.from_schedule(schedule(timedelta(seconds=10)))
intervalSchedule.save()
modelData = dict(
name="dcTestPersist",
task="technologytrackerapi.views.createRecord",
schedule=intervalSchedule,
)
periodicTask = PeriodicTask(**modelData)
periodicTask.save()
return render_to_response('taskView.html')
Run Code Online (Sandbox Code Playgroud)
数据在db中看起来是正确的但是当守护进程运行时它有以下错误:
[2012-03-06 00:23:07,926:警告/节拍]流程节拍:
[2012-03-06 00:23:07,926:警告/节拍]追溯(最近一次通话):
[2012-03-06 00 :23:07,926:警告/节拍]文件"/usr/lib/python2.7/multiprocessing/process.py",第258行,在_bootstrap中
[2012-03-06 00:23:07,926:警告/节拍]自我.运行()
[2012-03-06 00:23:07927:警告/节拍]文件"/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat .py",第464行,在运行中
[2012-03-06 00:23:07,927:警告/节拍] self.service.start(embedded_process = True)
[2012-03-06 00:23:07,927:警告/节拍]文件"/ home/dchesterman/Documents/PythonDev /.virtualenvs/ros/local/lib/python2.7/site-packages/celery/beat.py",第403行,开始
[2012-03-06 00:23 :07927:警告/节拍]间隔= self.scheduler.tick()
[2012-03-06 00:23:07927:警告/节拍]文件"/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/ lib/python2.7/site-packages/celery/beat.py",第194行,勾选
[2012-03-06 00:23:07,927:警告/是 在] next_time_to_run = self.maybe_due(条目,self.publisher)
[2012-03-06 00:23:07927:警告/节拍]文件"/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/ python2.7 /站点包/芹菜/ beat.py",线路170,在maybe_due
[2012-03-06 00:23:07927:警告/节拍] is_due,next_time_to_run = entry.is_due()
[2012-03- 06 00:23:07928:警告/拍子]文件"/home/dchesterman/Documents/PythonDev/.virtualenvs/ros/local/lib/python2.7/site-packages/djcelery/schedulers.py",第54行,在is_due
[2012-03-06 00:23:07928:警告/节拍]返回self.schedule.is_due(self.last_run_at)
[2012-03-06 00:23:07928:警告/拍子] AttributeError的: 'NoneType'对象没有属性'is_due'
我不确定为什么我的日程表没有使用默认值 is_due()
这最终为我工作:
def addTask(request):
intervalSchedule = IntervalSchedule.from_schedule(schedule(timedelta(seconds=10)))
intervalSchedule.save()
modelData = dict(
name="dcTestPersist",
task="technologytrackerapi.tasks.createRecord",
interval_id=intervalSchedule.pk,
)
periodicTask = PeriodicTask(**modelData)
periodicTask.save()
me = ModelEntry(periodicTask)
try:
me.save()
except:
from django.db import connection
print connection.queries
raise
return render_to_response('taskView.html')
Run Code Online (Sandbox Code Playgroud)
我不得不在ModelEntry中包装Periodic Task.
归档时间: |
|
查看次数: |
4521 次 |
最近记录: |