Кто-нибудь здесь знаком с облачными функциями Google? Я прочитал их документацию и, основываясь на этом, настроил свой сценарий, чтобы попытаться работать в их размещенной среде.
https://cloud.google.com/functions/docs/concepts/python-runtime
Итак, мой скрипт на Python выглядит следующим образом.
def main():
requests
numpy
pandas
datetime
requests
pandas_gbq
xml.etree.ElementTree
# authentication: working....
login = 'my_email'
password = 'my_password'
AsOfDate = datetime.datetime.today().strftime('%m-%d-%Y')
#step into URL
REQUEST_URL = 'https://www.business.com/report-api/device=779142&rdate=Yesterday'
response = requests.get(REQUEST_URL, auth=(login, password))
xml_data = response.text.encode('utf-8', 'ignore')
#tree = etree.parse(xml_data)
root = xml.etree.ElementTree.fromstring(xml_data)
# start collecting root elements and headers for data frame 1
desc = root.get("Description")
frm = root.get("From")
thru = root.get("Thru")
loc = root.get("locations")
loc = loc[:-1]
df1 = pandas.DataFrame([['From:',frm],['Through:',thru],['Location:',loc]])
df1.columns = ['S','Analytics']
#print(df1)
# start getting the analytics for data frame 2
data=[['Goal:',root[0][0].text],['Actual:',root[0][1].text],['Compliant:',root[0][2].text],['Errors:',root[0][3].text],['Checks:',root[0][4].text]]
df2 = pandas.DataFrame(data)
df2.columns = ['S','Analytics']
#print(df2)
# merge data frame 1 with data frame 2
df3 = df1.append(df2, ignore_index=True)
#print(df3)
# append description and today's date onto data frame
df3['Description'] = desc
df3['AsOfDate'] = AsOfDate
# push from data frame, where data has been transformed, into Google BQ
pandas_gbq.to_gbq(df3, 'Metrics', 'analytics', chunksize=None, reauth=False, if_exists='append', private_key=None, auth_local_webserver=False, table_schema=None, location=None, progress_bar=True, verbose=None)
print('Execute Query, Done!!')
main()
if __name__ == '__main__':
main()
Кроме того, мой файл require.txt выглядит следующим образом.
requests
numpy
pandas
datetime
requests
pandas_gbq
xml.etree.ElementTree
Мой сценарий работал нормально в течение последних 2 месяцев, но мне нужно запускать его на своем ноутбуке каждый день. Чтобы уйти от этого ручного процесса, я пытаюсь запустить его в облаке. Проблема в том, что я получаю сообщение об ошибке: TypeError: main() takes 0 positional arguments but 1 was given
Мне кажется, что аргументы не приводятся и аргументы не ожидаются, но почему-то Google говорит, что дан 1 аргумент. Могу ли я немного изменить свой код, чтобы заставить его работать, или как-то обойти эту, казалось бы, безобидную ошибку? Спасибо.