我用Celery创建了两种任务。一个是独立的Celery任务,可以根据数据库推送通知执行操作(程序监听数据库,一旦有消息启动任务)。另一个与django集成,接受一个url请求,用于触发任务。我跟着this example用Celery设置了django应用程序。对于独立的Celery任务,我在最tasks.py
目录下(在示例中)django
下定义了正常任务:
from celery import Celery
from demoapp.utils.read_images import download_images_mem
app = Celery('tasks', backend='redis://localhost', broker='amqp://guest@localhost//')
@app.task
def make_video(img_url_list, deviceid, utc, dst, cityname, streetname, CorF, lat, lon):
download_images_mem(img_url_list, deviceid, utc, dst, cityname, streetname, CorF, lat, lon)
我的tasks.py
目录下还有demoapp
,以:
@shared_task
def fired_by_url():
func definitions
我使用rabbitmq作为代理,redis作为两个任务的后端。我的问题是如何将它们组合在一起?基本上我遵循django-celery
教程和正常的芹菜教程,这就是为什么我有这样奇怪的目录布局和文件。但我想知道如何将它们组合在一起。我有类似的问题:我应该使用哪种芹菜实例? app = Celery('proj')
或settings.py
中的app = Celery('tasks', backend='redis://localhost', broker='amqp://guest@localhost//')
?我应该为两个任务使用哪个装饰器?我该如何组织文件?他们应该在同一台机器上运行。我对Celery真的很陌生,此时有点困惑。任何帮助将不胜感激。提前谢谢。