ソースを参照

역링크 초기화 문제 해결, 많은 문서에서 역링크를 초기화 할 때 메모리 많이 쓰던 문제 해결

Surplus_Up (2DU) 6 年 前
コミット
d28e85c665
5 ファイル変更36 行追加38 行削除
  1. 4 3
      app.py
  2. 15 9
      emergency_tool.py
  3. 2 2
      route/list_old_page.py
  4. 9 20
      route/tool/mark.py
  5. 6 4
      route/tool/set_mark/tool.py

+ 4 - 3
app.py

@@ -206,6 +206,10 @@ if setup_tool != 0:
 
     update()
 
+curs.execute(db_change('delete from other where name = "ver"'))
+curs.execute(db_change('insert into other (name, data) values ("ver", ?)'), [version_list['master']['c_ver']])
+conn.commit()
+
 # Init
 logging.basicConfig(level = logging.ERROR)
 
@@ -273,9 +277,6 @@ if not adsense_result:
     curs.execute(db_change('insert into other (name, data) values ("adsense", "False")'))
     curs.execute(db_change('insert into other (name, data) values ("adsense_code", "")'))
 
-curs.execute(db_change('delete from other where name = "ver"'))
-curs.execute(db_change('insert into other (name, data) values ("ver", ?)'), [version_list['master']['c_ver']])
-
 if set_data['db_type'] == 'sqlite':
     def back_up():
         print('----')

+ 15 - 9
emergency_tool.py

@@ -191,6 +191,10 @@ if setup_tool != 0:
 
     update()
 
+curs.execute(db_change('delete from other where name = "ver"'))
+curs.execute(db_change('insert into other (name, data) values ("ver", ?)'), [version_list['master']['c_ver']])
+conn.commit()
+
 # Main
 print('----')
 print('1. Backlink reset')
@@ -214,16 +218,18 @@ if what_i_do == '1':
     curs.execute(db_change("delete from back"))
     conn.commit()
 
-    curs.execute(db_change("select title, data from data"))
-    data = curs.fetchall()
     num = 0
-
-    for test in data:
-        num += 1
-        if num % 100 == 0:
-            print(num)
-
-        render_do(test[0], test[1], 1, None)
+    while 1:
+        curs.execute(db_change("select title, data from data d where not exists (select title from back where link = d.title) limit 1"))
+        data = curs.fetchall()
+        if data:
+            num += 1
+            if num % 100 == 0:
+                print(num)
+
+            render_do(data[0][0], data[0][1], 1, None)
+        else:
+            break
 elif what_i_do == '2':
     curs.execute(db_change("delete from other where name = 'recaptcha'"))
     curs.execute(db_change("delete from other where name = 'sec_re'"))

+ 2 - 2
route/list_old_page.py

@@ -18,8 +18,8 @@ def list_old_page_2(conn):
     curs.execute(db_change('' + \
         'select title, date from history h ' + \
         "where title not like 'user:%' and title not like 'category:%' and title not like 'file:%' and " + \
-        "exists (select title from data where title = h.title) " + \
-        "and not exists (select title from back where link = h.title and type = 'redirect') " + \
+        "exists (select title from data where title = h.title) and " + \
+        "not exists (select title from back where link = h.title and type = 'redirect') " + \
         'group by title ' + \
         'order by date asc ' + \
         'limit ?, 50' + \

+ 9 - 20
route/tool/mark.py

@@ -6,8 +6,9 @@ from .set_mark.tool import *
 import re
 import html
 import sqlite3
-import urllib.parse
+import asyncio
 import threading
+import urllib.parse
 import multiprocessing
 
 def load_conn2(data):
@@ -36,11 +37,11 @@ def send_parser(data):
 
     return data
 
-def plusing(data):
-    for data_in in data:
-        curs.execute(db_change("select title from back where title = ? and link = ? and type = ?"), [data_in[1], data_in[0], data_in[2]])
-        if not curs.fetchall():
-            curs.execute(db_change("insert into back (title, link, type) values (?, ?, ?)"), [data_in[1], data_in[0], data_in[2]])
+def plusing(data_in):
+    try:
+        curs.execute(db_change("insert into back (title, link, type) values (?, ?, ?)"), [data_in[1], data_in[0], data_in[2]])
+    except:
+        pass
 
 def render_do(title, data, num, include):
     curs.execute(db_change('select data from other where name = "markup"'))
@@ -61,20 +62,8 @@ def render_do(title, data, num, include):
         data = ['', '', []]
 
     if num == 1:
-        data_num = len(data[2])
-        data_in_num = int(data_num / multiprocessing.cpu_count())
-        data_in = []
-
-        for i in range(multiprocessing.cpu_count()):
-            if i != multiprocessing.cpu_count() - 1:
-                data_in += [data[2][data_in_num * i:data_in_num * (i + 1)]]
-            else:
-                data_in += [data[2][data_in_num * i:]]
-
-        for data_in_for in data_in:
-            thread_start = threading.Thread(target = plusing, args = [data_in_for])
-            thread_start.start()
-            thread_start.join()
+        for data_in in data[2]:
+            plusing(data_in)
 
         conn.commit()
 

+ 6 - 4
route/tool/set_mark/tool.py

@@ -9,7 +9,6 @@ def get_time():
 
 def db_data_get(data):
     global set_data
-
     set_data = data
 
 def db_change(data):
@@ -26,10 +25,13 @@ def ip_check(d_type = 0):
         ip = flask.session['id']
     
     if ip == '':
-        ip = flask.request.environ.get('HTTP_X_REAL_IP', flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr))
+        try:
+            ip = flask.request.environ.get('HTTP_X_REAL_IP', flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr))
 
-        if ip == '::1' or ip == '127.0.0.1':
-            ip = flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr)
+            if ip == '::1' or ip == '127.0.0.1':
+                ip = flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr)
+        except:
+            ip = 'error:ip'
 
     return str(ip)