gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:07:58 25 4
gpt4 key购买 nike

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

我想创建另一个具有定时器触发器的函数,并按计划调用HTTP触发器函数

HTTP 触发函数返回一个带有执行结果的简单字符串。

现在,我的定时器触发函数代码使用Python Requests,它每次都在本地工作,但部署到Azure时只能工作1/10次。其他时候,当超时达到 30 分钟时,它会返回错误。整个过程最多只能运行 1-2 分钟,所以我不明白它在哪里卡住了。

成功后,它可以工作(我可以在HTTP触发脚本的后端看到),但在 azure 日志中,记录器保存404错误页面html而不是HTTP 触发函数 应该返回。

下面是定时器触发功能的代码:

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}')

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

最佳答案

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

作为解决方法,我在不同的函数应用中创建两个函数(HttpTrigger 和 TimerTrigger),并将它们部署到 azure 中的两个函数应用。然后就可以正常工作了,他们不会互相交互。

希望对你有帮助~

关于python - 为什么我的 python 定时器触发函数没有在正确的时间运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61035038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com