python - 将函数用作视图和 celery 任务
问题描述
我使用 Django 2.2.12 和 Celery 4.4.7
我有一些功能(例如:下载图片)既需要用作视图,也需要用作计划的重复任务。设置它的最佳方法是什么?下面的代码生成以下错误消息:
NameError:名称“下载图片”未定义
下载app/views.py
def downloadpictures(request=None):
xxx
xxx
下载app/tasks.py
from downloadapp import downloadpictures
@shared_task
def downloadpicturesregular():
downloadpictures()
celery_tasks.py
app.conf.beat_schedule = {
'downloadpictures_regular':
{
'task': 'downloadapp.tasks.downloadpicturesregular',
'schedule': crontab(hour=18, minute=40, day_of_week='thu,sun'),
},
},
解决方案
通常,您的视图需要了解您的任务,而您的任务不关心视图。如果您的应用程序符合该假设,您应该将逻辑拉出到第三个模块或tasks.py
函数中。然后从任务和视图中调用该函数,或者从视图中调用任务。
推荐阅读
- java - Springboot Security + AngularJS Application + Memory 和 UserService 认证 + 自定义登录页面
- command-line - 如何使用 * 来包含偶数点文件
- docker-compose - dockerfile RUN echo 多行并带有变量
- python - 拟合 Prophet() 模型时出现值错误 - 无法识别参数
- node.js - npm 错误!提醒@0.1.0 构建:`CI= react-scripts build`
- sql - regexp_matches 列没有结果在数组/大括号中
- node.js - 节点缓冲区到 JSON
- c# - 没有属性映射到数据操作中使用的“CleaningEmployees.Id”列
- laravel - 我在使用 laravel 的实时服务器上的图像文件夹目录有问题
- python - 分隔行并使分隔成为新列