Как автоматически запускать мой скрипт Python каждые 24 часа в Azure?

У меня есть скрипт Python (написанный в блокноте Jupyter), и я хотел бы запустить этот скрипт в Azure. Сценарий Python в основном получает данные из источника API (который обновляется каждые 24 часа) и обновляет базу данных SQL, которая находится в Azure. Таким образом, этот автоматический скрипт Python будет обновлять таблицу базы данных всякий раз, когда он запускается.

Может ли кто-нибудь порадовать меня этим?

Ниже приведен код Python, который я написал,

import pyodbc
import requests
import json 
import pandas as pd

responses = requests.get("https://data.buffalony.gov/resource/d6g9-xbgu.json")

crime_data = json.loads(responses.text)

dic = {}

dic = crime_data

df = pd.DataFrame.from_dict(dic)

dff = df[['case_number','day_of_week','incident_datetime','incident_description','incident_id','incident_type_primary']].copy()

connection = pyodbc.connect ('Driver={ODBC Driver 17 for SQL Server};Server=servername;Database=Databasename;UID=admin;PWD=admin')

cur = connection.cursor()

row = []

for i in range(dff.shape[0]):

   row.append(dff.iloc[i].tolist())

sql = '''\
INSERT INTO [dbo].[FF] ([case_number],[day_of_week],[incident_datetime],[incident_description],[incident_id],[incident_type_primary]) values (?,?,?,?,?,?)
'''

for i in range(dff.shape[0]):

   cur.execute(sql,row[i])

connection.commit()

person mavles    schedule 15.08.2018    source источник


Ответы (2)


Я не использую блокнот azure и jupyter, но думаю, что у меня есть решение. Если вы оставляете свой компьютер работать всю ночь, измените свой код на это:

import time
import pyodbc
import requests
import json 
import pandas as pd
while 1:
    responses = requests.get("https://data.buffalony.gov/resource/d6g9-xbgu.json")

    crime_data = json.loads(responses.text)

    dic = {}

    dic = crime_data

    df = pd.DataFrame.from_dict(dic)

    dff =  df    [['case_number','day_of_week','incident_datetime','incident_description','incident_i         d','incident_type_primary']].copy()

    connection = pyodbc.connect ('Driver={ODBC Driver 17 for SQL Server};Server=servername;Database=Databasename;UID=admin;PWD=admin')

    cur = connection.cursor()

    row = []

    for i in range(dff.shape[0]):
        row.append(dff.iloc[i].tolist())

    sql = '''\
    INSERT INTO [dbo].[FF] ([case_number],[day_of_week],[incident_datetime],    [incident_description],[incident_id],[incident_type_primary]) values (?,?,?,?,?,?)
    '''

    for i in range(dff.shape[0]):

        cur.execute(sql,row[i])

    connection.commit()
    time.sleep(86400)

если нет, создайте новую программу python в файле запуска следующим образом:

import time, os
while 1:
    if time.ctime()[11:13] >= "update hour" and time.ctime()[0:4] != open("path/to/any_file.txt").read():
        file = open("path/to/any_file.txt", "w")
        file.write(time.ctime()[0:4])
        file.close()
        os.system("python /path/to/file.py")
person Docaro    schedule 15.08.2018

Планировщик задач, такой как Azure WebJobs сделает это за вас.

person pfcodes    schedule 15.08.2018
comment
Спасибо. Я попробовал этот подход, но когда я запускаю веб-задание, я вижу, что статус не выполнен. Мой код действителен, и он отлично работает в блокноте jupyter. Что может быть причиной этого? Должен ли я устанавливать библиотеки, такие как pandas, поскольку я включил их в свой скрипт. если да, где я должен установить эти библиотеки Python - person mavles; 15.08.2018
comment
Проверьте журналы, чтобы узнать, почему это не удалось. Скорее всего, речь идет об отсутствующих библиотеках Python. Статья ниже должна помочь вам разобраться, как установить библиотеки! stackoverflow.com/questions/45860272/ - person pfcodes; 15.08.2018