当新的 blob 上传到某个容器时,我怎么可能触发 azure webjob(python)?
how can I maybe trigger a azure webjob(python) when new blob is uploaded to a certain container?
首先感谢您的关注。
我的问题是:这可能吗?我怎样才能使用 webjob 来监视新的 blob 是否上传到某个 blob 容器?
问题背景:我在 python3.6 中为我的 azure webapp (windows).
编写了 webjob
以前类似的需求用的是azure function app,但是出于探索的愿望,也考虑到节省成本的问题,这里选择使用webjob。
下面是我如何在我的网络作业中建立到 Azure 存储帐户的连接/客户端
from azure.storage.blob import BlockBlobService
service = BlockBlobService(account_name=Storage_account_name, account_key=Storage_account_credential)
我认为如果 blob 名称未使用 datetime 前缀模式格式化,您将无法有效地获取在 WebJob 中上传的新 blob 事件。原因是获取新的 blob 上传事件的唯一解决方案是列出所有 blob 并按它们最后修改的属性对它们进行排序,然后在给定的时间戳后获取最新的 blob,并且触发调度程序是及时的。
假设容器中的这些 blob 名称类似于 mycontainer: 2019/07/31/HHMMSS/filename
,因此您可以列出带有 datetime 字符串前缀的最新 blob,以减少候选 blob 的数量,以按 last modified 排序以获得最新的。
如果不是,则没有一种机制可以帮助仅使用 Azure Blob 存储将新事件通知给您的 webjob。
否则,如果你能控制blob上传操作,你可以在每次上传一个blob时将一条消息发送到Azure Queue Storage的队列中,并在很短的时间内从WebJob中检索这些消息,那么你就可以大致得到新的及时触发您的逻辑。
所以最好的解决方案也是将 Azure Function 与 Blob Trigger 或 Azure Logic App 一起使用。
希望对您有所帮助。
首先感谢您的关注。
我的问题是:这可能吗?我怎样才能使用 webjob 来监视新的 blob 是否上传到某个 blob 容器?
问题背景:我在 python3.6 中为我的 azure webapp (windows).
编写了 webjob以前类似的需求用的是azure function app,但是出于探索的愿望,也考虑到节省成本的问题,这里选择使用webjob。
下面是我如何在我的网络作业中建立到 Azure 存储帐户的连接/客户端
from azure.storage.blob import BlockBlobService
service = BlockBlobService(account_name=Storage_account_name, account_key=Storage_account_credential)
我认为如果 blob 名称未使用 datetime 前缀模式格式化,您将无法有效地获取在 WebJob 中上传的新 blob 事件。原因是获取新的 blob 上传事件的唯一解决方案是列出所有 blob 并按它们最后修改的属性对它们进行排序,然后在给定的时间戳后获取最新的 blob,并且触发调度程序是及时的。
假设容器中的这些 blob 名称类似于 mycontainer: 2019/07/31/HHMMSS/filename
,因此您可以列出带有 datetime 字符串前缀的最新 blob,以减少候选 blob 的数量,以按 last modified 排序以获得最新的。
如果不是,则没有一种机制可以帮助仅使用 Azure Blob 存储将新事件通知给您的 webjob。
否则,如果你能控制blob上传操作,你可以在每次上传一个blob时将一条消息发送到Azure Queue Storage的队列中,并在很短的时间内从WebJob中检索这些消息,那么你就可以大致得到新的及时触发您的逻辑。
所以最好的解决方案也是将 Azure Function 与 Blob Trigger 或 Azure Logic App 一起使用。
希望对您有所帮助。