为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2022-09-27 10:49:27
这可能是一个新手问题。我有一个响应HTTP请求的Azure函数,它工作正常,我可以从浏览器或Python 3.8脚本调用它。我想制作另一个函数,该函数将具有并将按计划调用。Timer TriggerHTTP trigger functionHTTP Trigger function返回一个包含执行结果的简单字符串。现在我的代码正在使用Python,它每次都可以在本地工作,但是当部署到Azure时,它只能工作1/10次。其他时候,当它达到 30 分钟的超时时,它会返回错误。整个事情最多只能运行1-2分钟,所以我不明白它在哪里卡住。Timer trigger functionRequests成功后,它可以工作(我可以在后端看到),但在azure日志中,记录器保存页面html而不是应该返回的字符串。HTTP trigger script404 errorHTTP trigger function以下是计时器触发函数的代码:import datetimeimport loggingimport azure.functions as funcimport requestsdef 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}')如何排除故障或解决此问题?日志记录问题并不那么重要,但超时问题必须以某种方式解决,我不知道从哪里开始,因为它在本地工作得很好。
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

根据一些测试,我遇到了与你的类似的问题。我用默认代码创建了一个HttpTrigger(我在其中添加了一行)。然后我创建了一个计时器触发器(cron表达式是)与模块调用 HttpTrigger 函数。这两个函数都在一个函数应用程序中,似乎问题是由两个函数相互交互引起的,但我不知道为什么。所有这两个函数的代码看起来都很好。time.sleep(20)0 */1 * * * *requests

对于解决方法,我在不同的函数应用中创建两个函数(HttpTrigger 和计时器触发器),并将它们部署到 Azure 中的两个函数应用。然后它工作正常,它们不会相互交互。

希望对您有所帮助〜


查看完整回答
反对 回复 2022-09-27
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

下面的问题现在显然已经得到解决,尽管我还没有确认


关于这一点,某些cron表达式似乎存在某种问题。例如,请参阅此处的 GitHub 问题。所以我有一个cron表达式,这导致我的函数应用程序只是停止轮询而没有错误:"0-59 * * * *"

//img1.sycdn.imooc.com//633264db00018f6006520256.jpg

我根据这篇博客文章中的信息将 cron 更改为,现在我的函数按预期工作。"0 */2 * * * *"

//img1.sycdn.imooc.com//633264e700015e9e18400584.jpg

GitHub问题中,我要求对这种行为进行解释。



查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信