我们正在运行一个使用Django和Piston构建的网站,我想实施芹菜来将任务卸载到外部服务器。我真的不想在辅助服务器上运行Django,而只想运行纯Python的芹菜工作者。我可以在Django服务器上编写简单的函数存根,并在辅助服务器上编写实际的函数逻辑吗?
即
Django Side
from celery import task
@task
send_message(fromUser=None, toUser=None, msgType=None, msg=None):
pass
服务器端
from celery import Celery
celery = Celery('hello', broker='amqp://guest@localhost//')
@celery.task
send_message(fromUser=None, toUser=None, msgType=None, msg=None):
# Do send_message logic here
答案 0 :(得分:5)
这很容易实现。
如果你有一个纯python Celery工作者,你可以按名称发送任务 只要您使用相同的代理URL:
from celery import Celery
celery = Celery(broker='amqp://guest@localhost//')
然后在某些观点中:
celery.send_task('send_message', kwargs={
'fromUser': ...,
})
答案 1 :(得分:0)
您还可以使用CELERYBEAT_SCHEDULE安排配置任务:
CELERYBEAT_SCHEDULE = {
'scheduled_task':{
'task':'name in your task decorator',
'schedule': timedelta(...),
'args': (..., ),
}
}
但是你的工作人员必须使用芹菜节拍(-B
):
celery -A app.tasks worker -B -l info