Python 与django应用程序和后端服务器一起使用芹菜
我有一个后续/澄清问题与 我有2台服务器(目前)。1服务器运行django web应用程序。另一台服务器运行纯python脚本,这些脚本是web应用程序的CRON计划数据采集和处理作业 有一个用例,web应用程序中的用户活动(更新特定字段)应该触发后端服务器的一系列操作。我可以坚持使用CRON,但随着我们的规模扩大,我可以想象会遇到麻烦。芹菜似乎是一个很好的解决方案,但我不清楚如何实施它。(是的,我读过《入门指南》) 我希望web应用程序将任务发送到特定队列,但后端服务器实际执行工作 假设两台服务器使用相同的代理URL 我是否需要在Djando中定义存根任务,还是可以只使用Python 与django应用程序和后端服务器一起使用芹菜,python,django,celery,Python,Django,Celery,我有一个后续/澄清问题与 我有2台服务器(目前)。1服务器运行django web应用程序。另一台服务器运行纯python脚本,这些脚本是web应用程序的CRON计划数据采集和处理作业 有一个用例,web应用程序中的用户活动(更新特定字段)应该触发后端服务器的一系列操作。我可以坚持使用CRON,但随着我们的规模扩大,我可以想象会遇到麻烦。芹菜似乎是一个很好的解决方案,但我不清楚如何实施它。(是的,我读过《入门指南》) 我希望web应用程序将任务发送到特定队列,但后端服务器实际执行工作 假设两台服
芹菜.send_task
方法?
我还应该用django芹菜吗
同时,后端服务器将运行芹菜,并全面执行任务和工作人员?我决定尝试一下,解决出现的任何问题 在django服务器上,我没有使用
django芹菜
。我安装了芹菜
和redis
(通过pip),并遵循了
- 更新了
文件,其中包含了 芹菜的配置,如proj/proj/settings.py
BROKER\u URL
- 创建了
文件,但未定义任务 在底部proj/proj/芹菜.py
- 更新了
文件,如文档所示proj/proj/_init__.py
- 因为运行django的服务器实际上不会执行任何 芹菜任务,在会触发任务的视图中,我添加了 以下:
从proj.芹菜导入应用程序作为芹菜应用程序
试试看:
#将其发送到芹菜进行后端处理
芹菜app.send_task('tasks.mytask',kwargs={'some_id':obj.id,'other_att':obj.att},queue='my-queue')
除异常作为错误外:
打印('Issue sending task to Cellery')
打印错误
另一台服务器安装了以下组件:celery
和redis
(我在测试中使用了AWS Elasticache redis实例)。
此服务器具有以下文件:
将删除所有芹菜配置和队列 已定义,指向与django服务器相同的celeryconfig.py
BROKER\u URL
与我所有任务的实际代码tasks.py
芹菜-A任务工人-Q my-queue1,my-queue2
对于测试,上述方法有效。现在我只需要让芹菜在后台运行,并优化工人/队列的数量
如果有人有其他的意见或改进,我很乐意听到他们 您可以使用主管来控制芹菜和其他过程