Chcę wyzwalać funkcję HttpTrigger codziennie o godzinie 21:00 przy użyciu wyzwalacza timera. Czy jest to możliwe w Azure Function dla Pythona?
Nie jestem w stanie zrozumieć, jak mogę to wdrożyć? Czy jest sposób na zrealizowanie powyższego scenariusza?
Sprawdź poniższy kod.
Kod funkcji HttpTrigger
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
logging.info(name)
if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)
Kod funkcji TimerTrigger :-
import datetime
import logging
import requests
import azure.functions as func
def main(mytimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.utcnow().replace(
tzinfo=datetime.timezone.utc).isoformat()
if mytimer.past_due:
logging.info('The timer is past due!')
logging.info('Python timer trigger function ran at %s', utc_timestamp)
url = '<My URL>'
PARAMS = {"name": "Akshay"}
response_decoded_json = requests.post(url=url, params =PARAMS)
print(response_decoded_json.text)
logging.info("Result is :- ")
logging.info(response_decoded_json.text)
Sprawdź poniższy obraz dziennika błędów :-
1 odpowiedź
Oczywiście jest to dostępne, po prostu w funkcji wyzwalania timera wykonaj żądanie get / post. Poniżej znajduje się mój kod testowy.
import datetime
import logging
import requests
import azure.functions as func
def main(mytimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.utcnow().replace(
tzinfo=datetime.timezone.utc).isoformat()
if mytimer.past_due:
logging.info('The timer is past due!')
logging.info('Python timer trigger function ran at %s', utc_timestamp)
url = 'your function url'
PARAMS = {"name": "test"}
response_decoded_json = requests.post(url=url, params =PARAMS)
print(response_decoded_json.text)
Otrzymałem odpowiedź z funkcji wyzwalacza http, zgodnie z twoim wymaganiem zmień wyrażenie cron na 0 0 21 * * *
.
Aktualizacja: testuję, że jest dostępna.
Kod funkcji timera:
import datetime
import logging
import requests
import azure.functions as func
def main(mytimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.utcnow().replace(
tzinfo=datetime.timezone.utc).isoformat()
if mytimer.past_due:
logging.info('The timer is past due!')
logging.info('Python timer trigger function ran at %s', utc_timestamp)
url = 'https://functionname.azurewebsites.net/api/httptest?code=master key'
PARAMS = {"name": "test"}
response_decoded_json = requests.post(url=url, params =PARAMS)
logging.info(response_decoded_json.text)
Kod funkcji HTTP:
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)
Podczas przesyłania funkcji pamiętaj, aby dodać requests==2.22.0
w requirements.txt
.
Załóżmy, że głównym problemem jest uzyskanie adresu URL funkcji httptrigger. Adres URL głównym parametrem, którego potrzebujesz, to nazwa aplikacji funkcji, nazwa funkcji i klucz główny (lub klucz domyślny). Nazwę aplikacji funkcji i nazwę funkcji właściwie już znasz.
O kodzie (kluczu), możesz najpierw wdrożyć dowolną funkcję, a następnie przejdź do strony zarządzania, gdzie będziesz mógł pobrać kod i wkleić po adresie URL, otrzymasz pełny adres URL wyzwalacza http. Następnie wgraj dwie funkcje, będzie dobrze.
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
The timer is past due!
w funkcji TimerTrigger.