Я создал код, который использует REST для получения информации о задаче, предоставив ключ задачи,
проблема в том, что мне нужно сканировать от 180 000 000 до 999 999 999, не зная, какие ключи существуют, а какие нет
код работает правильно, но очень медленно ... и просто сканирует 100 000 000
займет около года
как я могу подойти к этому по-другому?
Я пытался реализовать многопроцессорность, но безуспешно
это мой код:
db = sqlite3.connect('databse.db')
cursor = db.cursor()
for key_iterator in range(180021820,999999999):
xml_result = REST_requests_test.getTaskInfo(str(key_iterator))
fault_code = int((xml_result.find("faultcode")))
if (fault_code != -1):
print ("key " +str(key_iterator) + " Not Found")
continue
jsn_info = json.dumps(xmltodict.parse(xml_result)) #Parse xml output from REST request to a JSON syntax
jsn_info = cleanJson(jsn_info) #clean unneccecery stuff from JSON
jsn_info.encode('utf-8')
my_dict = json.loads(jsn_info) #create dictionary from json
is_scheduled = int(my_dict["IsScheduled"]) #get task scheduling status
if (is_scheduled):
print (str(key_iterator)+" Task already schedule, Skipping")
continue
print ("Inserting "+str(key_iterator)+" to database")
l = list(my_dict.values())
str1 = [tuple(my_dict.values())]
columns = ', '.join(my_dict.keys())
placeholders = ', '.join('?' * len(my_dict))
query = 'INSERT INTO Tasks (%s) VALUES ' % (columns)
str2 = str(str1)
str2 = str2[1:-1]
query = query + " " + str2
cursor.execute(query)
db.commit()