I am trying to dynamically execute some tasks in celery using python 2.7 with the help of celerybeat-mongo as I want celery to dynamically pick up task details from mongo database. Here is my sample code:
from celery import Celery
app = Celery('tasks', broker='redis://localhost')
app.config_from_object('celeryconfig')
@app.task
def add(x, y):
return int(x) + int(y)
and according to documentation of celerybeat-mongo celerybeat-mongo
my mongodb document is as
{
"_id" : ObjectId("59786aa52f3dd74f7a2943d4"),
"_cls" : "PeriodicTask",
"name" : "Addition",
"task" : "task.add",
"enabled" : true,
"interval" : {
"every" : 1,
"period" : "minute"
},
"args" : [
"2",
"5"
],
"kwargs" : {
"max_targets" : "100"
}
}
and when I try to execute the following command:
celery beat -S celerybeatmongo.schedulers.MongoScheduler
it shows error as-
[2017-07-26 15:44:19,729: WARNING/MainProcess] File "/home/username/.venvs/cel/local/lib/python2.7/site-packages/celerybeatmongo/models.py", line 38, in schedule
[2017-07-26 15:44:19,730: WARNING/MainProcess] return celery.schedules.schedule(datetime.timedelta(**{self.period: self.every}))
[2017-07-26 15:44:19,730: WARNING/MainProcess] TypeError
[2017-07-26 15:44:19,730: WARNING/MainProcess] :
[2017-07-26 15:44:19,730: WARNING/MainProcess] keywords must be strings
I don't understand which keywords it is pointing to ?