为什么我的Python计时器触发函数没有在正确的时间运行?

这可能是一个新手问题。我有一个响应HTTP请求的Azure函数,它工作正常,我可以从浏览器或Python 3.8脚本调用它。


我想制作另一个函数,该函数将具有并将按计划调用。Timer TriggerHTTP trigger function


HTTP Trigger function返回一个包含执行结果的简单字符串。


现在我的代码正在使用Python,它每次都可以在本地工作,但是当部署到Azure时,它只能工作1/10次。其他时候,当它达到 30 分钟的超时时,它会返回错误。整个事情最多只能运行1-2分钟,所以我不明白它在哪里卡住。Timer trigger functionRequests


成功后,它可以工作(我可以在后端看到),但在azure日志中,记录器保存页面html而不是应该返回的字符串。HTTP trigger script404 errorHTTP trigger function


以下是计时器触发函数的代码:


import datetime

import logging


import azure.functions as func


import requests


def main(mytimer: func.TimerRequest) -> None:

    URL = "https://rob-functions.azurewebsites.net/api/ss_kite_scrape_http"

    r = requests.get(url = URL) 

    data = r.text

    logging.info(f'TIMER TRIGGER HAS RUN. RESULT:{data}')

如何排除故障或解决此问题?日志记录问题并不那么重要,但超时问题必须以某种方式解决,我不知道从哪里开始,因为它在本地工作得很好。


RISEBY
浏览 139回答 2
2回答

一只甜甜圈

根据一些测试,我遇到了与你的类似的问题。我用默认代码创建了一个HttpTrigger(我在其中添加了一行)。然后我创建了一个计时器触发器(cron表达式是)与模块调用 HttpTrigger 函数。这两个函数都在一个函数应用程序中,似乎问题是由两个函数相互交互引起的,但我不知道为什么。所有这两个函数的代码看起来都很好。time.sleep(20)0 */1 * * * *requests对于解决方法,我在不同的函数应用中创建两个函数(HttpTrigger 和计时器触发器),并将它们部署到 Azure 中的两个函数应用。然后它工作正常,它们不会相互交互。希望对您有所帮助〜

慕尼黑5688855

下面的问题现在显然已经得到解决,尽管我还没有确认关于这一点,某些cron表达式似乎存在某种问题。例如,请参阅此处的 GitHub 问题。所以我有一个cron表达式,这导致我的函数应用程序只是停止轮询而没有错误:"0-59 * * * *"我根据这篇博客文章中的信息将 cron 更改为,现在我的函数按预期工作。"0 */2 * * * *"在GitHub问题中,我要求对这种行为进行解释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python