【发布时间】:2020-09-01 10:30:36
【问题描述】:
我正在尝试制作一个将.txt 文件与 Cloudinary 同步的程序。目的是使用 Heroku 运行代码并在 dyno 重新启动时下载断言。问题是他们的网站上似乎没有说明下载功能(很可能是我不知道如何阅读)。
我认为fetch 函数可能是我正在寻找的,但它似乎也用于上传。我也知道有一些功能(可能不是来自 Cloudinary)可以使用该链接下载。这个解决方案也可以,但我需要找到一种方法来获取链接(但我很确定它会在你上传时得到returned),但问题是我的程序应该首先同步这意味着我无法将链接作为返回值。我也想知道是否有办法删除文件(如果它们具有相同的名称,它们不会自动替换)。
我做了一个小样本,可以上传文件,效果很好:
import cloudinary
import os
from cloudinary import uploader
from signal import signal, SIGINT, SIGTERM
import time
cloudinary.config(
cloud_name = 'not_real',
api_key = '696969696996',
api_secret = 'helloWorld'
)
def downloader():
#something here...
pass
downloader()
def handler(sig, frame):
print(cloudinary.uploader.upload("TEST.txt", resource_type = "raw", public_id = "TEST"))
print("PID: ", os.getpid())
signal(SIGTERM, handler) # to understand when the dyno is getting killed
while True:
print("Doing nothing...")
time.sleep(3600)
再次(简而言之)我希望这样做:
- 通过链接或名称下载文件。
- 删除旧文件(如有必要)
任何帮助将不胜感激。
更新:似乎指向 Cloudinaty .txt 文件的链接打开了一个只有文本的空网页,所以我想我可以这样做
r = requests.get("https://res.cloudinary.com/name/raw/upload/v1589215899/TEST.txt")
print(r.text)
,但我想知道是否有更好的解决方案。
【问题讨论】:
-
您打算将该文件存储在您的服务器中还是存储在哪里?
-
@daniel-mendoza,这个想法是将文件存储在 Cloudinary 上。但是当程序运行时,我会下载它们以减少 API 调用的数量。这里最重要的是我第一次下载时如何获得链接?我不想每次都手动输入。
-
当您将文件上传到 Cloudinary 时,您将获得详细信息以再次访问该内容。这不是存储在任何地方吗?我可能误解了你所说的
how do I get the link when I first download? -
@daniel-mendoza 问题是我只能在上传内容时获得链接,但如果我没有怎么办?要求手动输入链接是荒谬的,但很有必要,因为 Heroku 在重新启动后什么都不存储。我发现你实际上可以生成这样的链接:
link = cloudinary.utils.cloudinary_url(filename, resource_type = "raw")[0]。效果很好。
标签: python cloudinary