@timur102

Как лучше реализовать сохранение данных?

Я написал код, который, используя vk long poll, собирает данные (кто когда зашел и вышел, кто что написал и т.д.).
import requests
from constants import token  
import csv
import threading 

LOCK = threading.RLock()
def auth(token):
	data = requests.get('https://api.vk.com/method/messages.getLongPollServer',
                    params={'access_token': token, 'v':5.85}).json()['response'] 
	server = data['server']
	ts = data['ts']
	key = data['key']
	return [server, key, ts]

def write2csv(file_name, data):
	global LOCK
	LOCK.acquire()
	with open(file_name, 'a', newline='') as f:
		writer = csv.writer(f, delimiter=',')
		writer.writerow(data)
	LOCK.release()

def main():
	data = auth(token)
	while 1:
		response = requests.get('https://{0}?act=a_check&key={1}&ts={2}&wait=20&mode=2&version=2'.format(*data)).json()
		try:
			updates = response['updates']
		except KeyError:
			data = auth(token)
			continue
		if updates: 
			for element in updates:
				thread1 = threading.Thread(target=write2csv, args=("log.csv", element))
				thread1.start()
		data[2] = response['ts']
if __name__ == '__main__':
		main()

Пока я реализовал это так. Но я не знаю, правильно ли я это делаю? Нормально ли представление в csv?
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
response.get('updates') не вызывает исключения
updates = response.get('updates')
if not updates:
    data = auth(token)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы