Я работаю с данными, хранящимися в firestore, с помощью Python. Я создал функцию на своем локальном компьютере для обновления своих данных в firestore, но теперь я хочу добавить облачную функцию для автоматического обновления каждый день, используя Pub / sub и планировщик облака.
это функция, которую я использую:
from google.cloud import firestore
from datetime import datetime, timedelta
db = firestore.Client.from_service_account_json('credentials/gc.json')
def update_collection__persons():
persons = db.collection(u'collection__persons')
#person_docs = persons.stream()
person_docs = [snapshot for snapshot in persons.stream()]
for person_doc in person_docs:
person_dict = person_doc.to_dict()
#last_updated = person_dict['last_updated']
#last_processed = person_dict['last_processed']
#dt_last_updated = datetime(1, 1, 1) + timedelta(microseconds=last_updated/10)
#dt_last_processed = datetime(1, 1, 1) + timedelta(microseconds=last_processed/10)
#if dt_last_processed < dt_last_updated:
orders = db.collection(u'collection__orders').where(u'email', u'==', person_dict['email'])
orders_docs = [snapshot for snapshot in orders.stream()]
sum_price = 0
count = 0
date_add_list = []
for order_doc in orders_docs:
order_dict = order_doc.to_dict()
sum_price += order_dict['total_price']
count +=1
date_add_list.append(order_dict['dateAdded'])
if count > 0:
data = {'metrics': {'LTV': sum_price,
'AOV': sum_price/count,
'Quantity_orders': count,
'first_order_date': min(date_add_list),
'last_order_date': max(date_add_list)},
'last_processed': int((datetime.utcnow() - datetime(1, 1, 1)).total_seconds() * 10000000),
'delta_last_updated_last_processed': 0}
db.collection(u'collection__persons').document(person_dict['email']).set(data, merge = True)
Я хочу поместить его в функции Google, у меня есть два вопроса здесь:
- Я получаю сообщение об ошибке, потому что когда функция срабатывает - похоже, она что-то передаетк этому, и это вызывает ошибку, потому что def просто ().
Я прочитал, что я должен поместить эти две переменные в мою функцию: https://cloud.google.com/functions/docs/calling/pubsub?hl=en
def My_function (event, context):
Я не понимаю, что мне делать с этими переменными, что я должен изменить в своей функции для работы с этими переменными?
Я хочу писать логи, как только я запустил функцию, чтобы узнать, хорошо ли запустилась функция и когда она закончится, а также знать, как писать, если что-то не так, я прочитал, что могу сделать это с помощью google.cloud. logging:
Google Cloud Functions Python Logging проблема Но я не знаю, как реализовать эти журналы в моей функции, у меня нет большого опыта в этом