django - Django celery 任务 api 调用
问题描述
我建立了 rss 聚合站点,并尝试调用 iframely.com 来获取我的 rss 对象条目的图像(我将每个条目都保存在数据库中)。
但是,当我为此添加 celery 任务时,rss 聚合器没有获得新条目并且什么也没发生,0 错误。任务不运行。
我的代码:
class Post(models.Model):
# an entry in a feed
source = models.ForeignKey(Source, on_delete=models.CASCADE, related_name='posts')
title = models.TextField(blank=True)
body = models.TextField()
link = models.CharField(max_length=512, blank=True, null=True)
...
def save(self, *args, **kwargs):
from .tasks import save_thumbnail_url
if not self.image_url:
self.image_url = save_thumbnail_url.delay(self.id)
super(Post, self).save(*args, **kwargs)
我也尝试过 post_save 信号,效果相同。
任务:
def get_thumbnail_from_url(post: Post):
if not post.image_url:
req = requests.get('https://iframe.ly/api/oembed?url=' + post.link + '&api_key=493c9ebbdfcbdac2a10d6b')
thumbnail_url = req.json()['thumbnail_url']
post.objects.filter(id=post.id).update(image_url=thumbnail_url)
@shared_task
def save_thumbnail_url(post_id: int):
get_thumbnail_from_url(Post.objects.get(id=post_id))
解决方案
推荐阅读
- sql - 显示空白值
- r - R:字符串向量的平均成对差异
- javascript - 使用 Vue 处理使用 vue-svg-loader 加载的 svg 形状上的点击事件
- android - 通过 Retrofit2 从 API 接收 ByteArray 数据会导致我的 Android 应用程序出错
- haskell - 擦除类型参数的 GADT 的相等性
- c# - 如何在 Elasticsearch 中使用 AND 连接查询?
- python - 在单独的 json 文件中分别打印和保存多个产品类别的属性
- reactjs - nextjs 在本地存储中反应反冲持久化值:初始页面加载处于错误状态
- owasp - 这在实践中意味着什么:“唯一的应用程序业务限制要求应该由域模型强制执行。”
- html - 表格不安全。自动填充已关闭