簡體   English   中英

為什么我的 python 定時器觸發器 function 沒有在正確的時間運行?

[英]Why is my python timer trigger function not running at the correct time?

這可能是一個菜鳥問題。 I have an Azure Function that responds to HTTP requests and it works fine, I can call it from a browser or from a Python 3.8 script.

我想制作另一個 function 將有Timer Trigger ,並將按計划調用HTTP trigger function

HTTP Trigger function返回一個帶有執行結果的簡單字符串。

現在我的Timer trigger function正在使用 Python Requests ,它每次都在本地工作,但在部署到 Z3A580F142203677F135Z30898F63F 時只能工作 1/10 次。 有時它會在超時 30 分鍾時返回錯誤。 整個過程最多只能運行 1-2 分鍾,所以我不明白它卡在哪里了。

When successful it works(I can see in backend of HTTP trigger script ), but in azure logs the logger saves 404 error page html instead of the string that HTTP trigger function should return.

這是定時器觸發器 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}')

如何解決或解決此問題? 日志記錄問題並不那么重要,但超時問題必須以某種方式解決,我不知道從哪里開始,因為它在本地完美運行。

根據一些測試,我遇到了與您類似的問題。 我使用默認代碼創建了一個 HttpTrigger(我在其中添加了一行time.sleep(20) )。 然后我創建了一個 TimerTrigger(cron 表達式為0 */1 * * * * )和requests模塊來調用 HttpTrigger function。 這兩個功能在一個 function 應用程序中,似乎問題是由兩個功能相互交互引起的,但我不知道為什么。 所有兩個函數代碼看起來都很好。

作為解決方法,我在不同的 function 應用程序中創建了兩個函數(HttpTrigger 和 TimerTrigger),並將它們部署到 ZCF04A02E37B774FC311A48F605C3C57 中的兩個 function 應用程序中。 然后它工作正常,它們不會相互交互。

希望有幫助~

盡管我尚未確認,但以下問題現在顯然已得到解決


與此有關的某些 cron 表達式似乎存在某種問題。 例如在這里查看我的 GitHub 問題 所以我有一個 cron 表達式"0-59 * * * *" ,這導致我的 function 應用程序只是停止輪詢而沒有錯誤:

在此處輸入圖像描述

我根據這篇博文中的信息將 cron 更改為"0 */2 * * * *" ,現在我的 function 正在按預期工作。

在此處輸入圖像描述

GitHub 問題中,我要求解釋這種行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM