kcwebs 1.7__tar.gz → 1.81__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kcwebs-1.7 → kcwebs-1.81}/PKG-INFO +2 -2
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/__init__.py +1 -1
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/common/autoload.py +62 -46
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/common/session.py +4 -5
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/db/model.py +0 -2
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/http.py +1 -3
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs.egg-info/PKG-INFO +2 -2
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs.egg-info/SOURCES.txt +0 -8
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs.egg-info/requires.txt +1 -2
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs.egg-info/top_level.txt +0 -1
- {kcwebs-1.7 → kcwebs-1.81}/setup.py +2 -2
- kcwebs-1.7/kcwebs/utill/cache/cache.py +0 -312
- kcwebs-1.7/kcwebs/utill/db/mysql copy.py +0 -1308
- kcwebs-1.7/kcwebs/utill/db/mysql.py +0 -1383
- kcwebs-1.7/kcwebs/utill/redis.py +0 -597
- {kcwebs-1.7 → kcwebs-1.81}/README.md +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/common/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/config/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/kcwebs.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/common/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/common/autoload.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/autoload.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/html/include/static.html +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/model.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/index.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/tpl/index/home.html +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/api/controller/index/tpl/index/index.html +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/common/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/common/autoload.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/common/html/include/static.html +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/common/model.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/config/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/config/app.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/config/database.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/config/other.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/app/config/redis.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/tempfile/kcwebs/server.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/db/mongodb.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/db/sqlite.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/queues.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/common/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/common/exceptions.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/android/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/android/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/blackberry/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/blackberry/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/chrome/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/chrome/options.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/chrome/remote_connection.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/chrome/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/chrome/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/action_chains.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/alert.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/by.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/desired_capabilities.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/html5/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/html5/application_cache.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/keys.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/proxy.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/touch_actions.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/common/utils.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/edge/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/edge/options.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/edge/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/edge/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/extension_connection.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/firefox_binary.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/firefox_profile.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/options.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/remote_connection.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/firefox/webelement.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/ie/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/ie/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/ie/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/opera/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/opera/options.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/opera/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/phantomjs/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/phantomjs/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/phantomjs/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/command.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/errorhandler.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/file_detector.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/getAttribute.js +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/isDisplayed.js +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/mobile.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/remote_connection.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/switch_to.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/utils.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/remote/webelement.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/safari/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/safari/service.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/safari/webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/__init__.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/abstract_event_listener.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/color.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/event_firing_webdriver.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/events.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/expected_conditions.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/select.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/ui.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs/utill/selenium3/webdriver/support/wait.py +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs.egg-info/dependency_links.txt +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/kcwebs.egg-info/entry_points.txt +0 -0
- {kcwebs-1.7 → kcwebs-1.81}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.2
|
|
2
2
|
Name: kcwebs
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.81
|
|
4
4
|
Summary: kcwebs作为web开发而设计的高性能框架
|
|
5
5
|
Home-page: https://docs.kwebapp.cn/index/index/2
|
|
6
6
|
Author: 百里-坤坤
|
|
@@ -9,5 +9,5 @@ Maintainer: 坤坤
|
|
|
9
9
|
Maintainer-email: fk1402936534@qq.com
|
|
10
10
|
License: MIT License
|
|
11
11
|
Description: kcwebs作为web开发而设计的高性能框架,采用全新的架构思想,注重易用性。遵循MIT开源许可协议发布,意味着个人和企业可以免费使用kcwebs,甚至允许把你基于kcwebs开发的应用开源或商业产品发布或销售。完整文档请访问:https://docs.kwebapp.cn/index/index/2
|
|
12
|
-
Keywords: kcwebs1.
|
|
12
|
+
Keywords: kcwebs1.81
|
|
13
13
|
Platform: UNKNOWN
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
from kcws.common import *
|
|
2
2
|
from .. import config
|
|
3
3
|
import random,urllib,asyncio,websockets,smtplib,datetime,chardet,copy,multiprocessing,warnings,xlrd,threading
|
|
4
|
-
from kcwebs.utill.redis import redis as kcwsredis
|
|
4
|
+
# from kcwebs.utill.redis import redis as kcwsredis
|
|
5
|
+
import kcwredis,kcwcache,kcwmysql
|
|
5
6
|
from email.mime.text import MIMEText
|
|
6
7
|
from email.utils import formataddr
|
|
7
8
|
from mako.template import Template as kcwsTemplate
|
|
8
9
|
from mako.lookup import TemplateLookup
|
|
9
|
-
from kcwebs.utill.db import mysql as kcwsmysql
|
|
10
10
|
from kcwebs.utill.db import sqlite as kcwssqlite
|
|
11
|
-
from kcwebs.utill.cache import cache as kcwscache
|
|
12
11
|
from kcwebs.utill.db import mongodb as kcwsmongodb
|
|
13
12
|
from dateutil.relativedelta import relativedelta
|
|
14
13
|
from kcwebs.utill.http import Http
|
|
15
14
|
from kcwebs.utill.queues import Queues
|
|
16
15
|
from kcwebs.utill.db import model
|
|
16
|
+
|
|
17
17
|
from PIL import Image
|
|
18
18
|
import openpyxl
|
|
19
19
|
import pdf2docx
|
|
20
20
|
from pyquery import PyQuery as kcwebspq
|
|
21
|
-
|
|
22
|
-
redisobj=kcwsredis()
|
|
21
|
+
redisobj=kcwredis.redis
|
|
23
22
|
python_version=platform.python_version()
|
|
24
23
|
if python_version[0:3]!='3.8':
|
|
25
24
|
print("\033[1;31;40m "+config.kcwebs['name']+"-"+config.kcwebs['version']+"依赖python3.8,与你现在的python"+python_version+"不兼容,推荐安装python3.8")
|
|
@@ -775,19 +774,24 @@ def rggestrsgrhklhtrdhbithjtiorjhiothposzfsgrgtsre(docfile,imgpath=False,imgmins
|
|
|
775
774
|
file_set_content(outfiles,html)
|
|
776
775
|
else:
|
|
777
776
|
return html
|
|
778
|
-
|
|
777
|
+
thread_exception = None
|
|
778
|
+
def fesgrsgtrgtdrhbtdgrrgrgsgtsegr(pdfname,outname):
|
|
779
779
|
"""pdf转docx
|
|
780
780
|
|
|
781
781
|
pdfname pdf文件
|
|
782
782
|
|
|
783
783
|
outname 转换后保存文件
|
|
784
784
|
"""
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
os.
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
785
|
+
global thread_exception
|
|
786
|
+
try:
|
|
787
|
+
folder_path=os.path.dirname(outname)
|
|
788
|
+
if folder_path and not os.path.exists(folder_path):
|
|
789
|
+
os.makedirs(folder_path, exist_ok=True)
|
|
790
|
+
cv = pdf2docx.Converter(pdfname)
|
|
791
|
+
cv.convert(outname, start=0, end=None)
|
|
792
|
+
cv.close()
|
|
793
|
+
except Exception as e:
|
|
794
|
+
thread_exception = e
|
|
791
795
|
return True
|
|
792
796
|
def tran_pdf_to_docx(pdfname,outname,timeout=None):
|
|
793
797
|
"""pdf转docx
|
|
@@ -799,15 +803,32 @@ def tran_pdf_to_docx(pdfname,outname,timeout=None):
|
|
|
799
803
|
timeout 转换超时 单位秒
|
|
800
804
|
"""
|
|
801
805
|
if not timeout:
|
|
802
|
-
|
|
806
|
+
folder_path=os.path.dirname(outname)
|
|
807
|
+
if folder_path and not os.path.exists(folder_path):
|
|
808
|
+
os.makedirs(folder_path, exist_ok=True)
|
|
809
|
+
cv = pdf2docx.Converter(pdfname)
|
|
810
|
+
cv.convert(outname, start=0, end=None)
|
|
811
|
+
cv.close()
|
|
812
|
+
return True
|
|
803
813
|
else:
|
|
814
|
+
global thread_exception
|
|
815
|
+
thread_exception=None
|
|
816
|
+
if not os.path.exists(pdfname):
|
|
817
|
+
raise Exception("no such file: '"+pdfname+"'")
|
|
804
818
|
thread = threading.Thread(target=fesgrsgtrgtdrhbtdgrrgrgsgtsegr,args=(pdfname,outname),daemon=True)
|
|
805
819
|
thread.start()
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
820
|
+
try:
|
|
821
|
+
thread.join(timeout=timeout)
|
|
822
|
+
if thread.is_alive():
|
|
823
|
+
thread.join()
|
|
824
|
+
raise Exception('tran_pdf_to_docx timeout out')
|
|
825
|
+
else:
|
|
826
|
+
if thread_exception:
|
|
827
|
+
raise Exception(thread_exception)
|
|
828
|
+
return True
|
|
829
|
+
except KeyboardInterrupt:
|
|
830
|
+
thread.join()
|
|
831
|
+
|
|
811
832
|
def tran_pdf_to_xlsx_process(pdfname,outname,process=True):
|
|
812
833
|
"""pdf 转 xlsx
|
|
813
834
|
|
|
@@ -1053,24 +1074,7 @@ def getfunction(strs,reload=False):
|
|
|
1053
1074
|
if reload:
|
|
1054
1075
|
importlib.reload(obj)
|
|
1055
1076
|
return obj
|
|
1056
|
-
|
|
1057
|
-
"""数据库操作实例
|
|
1058
|
-
|
|
1059
|
-
参数 table:表名
|
|
1060
|
-
|
|
1061
|
-
参数 confi 数据库配置 可以传数据库名字符串
|
|
1062
|
-
"""
|
|
1063
|
-
if confi:
|
|
1064
|
-
if confi['type']=='sqlite':
|
|
1065
|
-
return sqlite(table,confi)
|
|
1066
|
-
else:
|
|
1067
|
-
return mysql(table,confi)
|
|
1068
|
-
else:
|
|
1069
|
-
if config.database['type']=='sqlite':
|
|
1070
|
-
return sqlite(table)
|
|
1071
|
-
else:
|
|
1072
|
-
return mysql(table)
|
|
1073
|
-
mysqldbobj=kcwsmysql.mysql()
|
|
1077
|
+
mysqldbobj=kcwmysql.mysql
|
|
1074
1078
|
def mysql(table=None,configss=None):
|
|
1075
1079
|
"""mysql数据库操作实例
|
|
1076
1080
|
|
|
@@ -1080,7 +1084,7 @@ def mysql(table=None,configss=None):
|
|
|
1080
1084
|
"""
|
|
1081
1085
|
global mysqldbobj
|
|
1082
1086
|
if not mysqldbobj:
|
|
1083
|
-
mysqldbobj=
|
|
1087
|
+
mysqldbobj=kcwmysql.mysql
|
|
1084
1088
|
if table is None:
|
|
1085
1089
|
return mysqldbobj
|
|
1086
1090
|
elif configss:
|
|
@@ -1115,6 +1119,23 @@ def mongo(table=None,configss=None):
|
|
|
1115
1119
|
return mObj.connect(configss).table(table)
|
|
1116
1120
|
else:
|
|
1117
1121
|
return mObj.connect(config.mongo).table(table)
|
|
1122
|
+
def M(table=None,confi=None):
|
|
1123
|
+
"""数据库操作实例
|
|
1124
|
+
|
|
1125
|
+
参数 table:表名
|
|
1126
|
+
|
|
1127
|
+
参数 confi 数据库配置 可以传数据库名字符串
|
|
1128
|
+
"""
|
|
1129
|
+
if confi:
|
|
1130
|
+
if confi['type']=='sqlite':
|
|
1131
|
+
return sqlite(table,confi)
|
|
1132
|
+
else:
|
|
1133
|
+
return mysql(table,confi)
|
|
1134
|
+
else:
|
|
1135
|
+
if config.database['type']=='sqlite':
|
|
1136
|
+
return sqlite(table)
|
|
1137
|
+
else:
|
|
1138
|
+
return mysql(table)
|
|
1118
1139
|
def set_cache(name,values,expire="no"):
|
|
1119
1140
|
"""设置缓存
|
|
1120
1141
|
|
|
@@ -1126,7 +1147,7 @@ def set_cache(name,values,expire="no"):
|
|
|
1126
1147
|
|
|
1127
1148
|
return Boolean类型
|
|
1128
1149
|
"""
|
|
1129
|
-
return
|
|
1150
|
+
return kcwcache.cache.set_cache(name,values,expire)
|
|
1130
1151
|
def get_cache(name):
|
|
1131
1152
|
"""获取缓存
|
|
1132
1153
|
|
|
@@ -1134,7 +1155,7 @@ def get_cache(name):
|
|
|
1134
1155
|
|
|
1135
1156
|
return 或者的值
|
|
1136
1157
|
"""
|
|
1137
|
-
return
|
|
1158
|
+
return kcwcache.cache.get_cache(name)
|
|
1138
1159
|
def del_cache(name):
|
|
1139
1160
|
"""删除缓存
|
|
1140
1161
|
|
|
@@ -1142,7 +1163,7 @@ def del_cache(name):
|
|
|
1142
1163
|
|
|
1143
1164
|
return Boolean类型
|
|
1144
1165
|
"""
|
|
1145
|
-
return
|
|
1166
|
+
return kcwcache.cache.del_cache(name)
|
|
1146
1167
|
def dateoperator(date,years=0,formats='%Y%m%d%H%M%S',months=0, days=0, hours=0, minutes=0,seconds=0,
|
|
1147
1168
|
leapdays=0, weeks=0, microseconds=0,
|
|
1148
1169
|
year=None, month=None, day=None, weekday=None,
|
|
@@ -1648,9 +1669,4 @@ def del_system_up(cmd,vague=False):
|
|
|
1648
1669
|
raise Exception('暂不支持linux以外的系统')
|
|
1649
1670
|
def rfdsgeagesegdsfdsfdrrsebskcwebsafterrequest():
|
|
1650
1671
|
#关闭数据库连接 不要修改改方法,也不要定义与该方法相同名字的方法
|
|
1651
|
-
|
|
1652
|
-
mysqldbobj.close()
|
|
1653
|
-
except:pass
|
|
1654
|
-
try:
|
|
1655
|
-
mysqldbobj.close()
|
|
1656
|
-
except:pass
|
|
1672
|
+
mysqldbobj.close(all=True)
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
from kcwebs.config import session as kcwssession
|
|
3
3
|
from . import globals as kcwsglobals
|
|
4
|
-
import time,random,hashlib
|
|
5
|
-
from kcwebs.utill.cache import cache as kcwscache
|
|
4
|
+
import time,random,hashlib,kcwcache
|
|
6
5
|
from datetime import datetime
|
|
7
6
|
def __md5(strs):
|
|
8
7
|
m = hashlib.md5()
|
|
@@ -27,7 +26,7 @@ def set(name,value,expire=None):
|
|
|
27
26
|
strs="kcws"+str(time.time())+str(random.randint(0,9))
|
|
28
27
|
token=__md5(strs)
|
|
29
28
|
kcwsglobals.set_cookie=SESSIONID+"="+token+";expires="+datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')+"; Max-Age=%d;Path=/" % (int(expire)*10)
|
|
30
|
-
return
|
|
29
|
+
return kcwcache.cache.set_config(kcwssession).set_cache(token,value,expire)
|
|
31
30
|
def get(name):
|
|
32
31
|
"获取session"
|
|
33
32
|
HTTP_COOKIE=kcwsglobals.HEADER.HTTP_COOKIE
|
|
@@ -40,7 +39,7 @@ def get(name):
|
|
|
40
39
|
for k in HTTP_COOKIE:
|
|
41
40
|
if SESSIONID in k:
|
|
42
41
|
token=k.split("=")[1]
|
|
43
|
-
v=
|
|
42
|
+
v=kcwcache.cache.set_config(kcwssession).get_cache(token)
|
|
44
43
|
return v
|
|
45
44
|
def rm(name):
|
|
46
45
|
"删除session"
|
|
@@ -54,7 +53,7 @@ def rm(name):
|
|
|
54
53
|
for k in HTTP_COOKIE:
|
|
55
54
|
if SESSIONID in k:
|
|
56
55
|
token=k.split("=")[1]
|
|
57
|
-
|
|
56
|
+
kcwcache.cache.set_config(kcwssession).del_cache(token)
|
|
58
57
|
kcwsglobals.set_cookie=SESSIONID+"="+token+";expires="+datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')+"; Max-Age=2"
|
|
59
58
|
return True
|
|
60
59
|
|
|
@@ -111,6 +111,7 @@ class Http:
|
|
|
111
111
|
tt=self.__get_pyquery_rules_obj(wait_pq1,doc)
|
|
112
112
|
if tt and tt.length:
|
|
113
113
|
if wait_pq_type=='text':
|
|
114
|
+
# print('tt.text()',wait_pq1)
|
|
114
115
|
if len(tt.text().replace(' ','').replace('\n','').replace('\r','').replace('\t',''))>0:
|
|
115
116
|
sfdsf=True
|
|
116
117
|
break
|
|
@@ -345,14 +346,11 @@ class Http:
|
|
|
345
346
|
# self.set_cookies=self.get_cookies
|
|
346
347
|
if closedriver:
|
|
347
348
|
self.ChromeObj.quit()
|
|
348
|
-
self.ChromeObj.close()
|
|
349
349
|
self.ChromeObj=None
|
|
350
350
|
def close_webdriver(self):
|
|
351
351
|
if self.ChromeObj:
|
|
352
352
|
self.ChromeObj.quit()
|
|
353
|
-
self.ChromeObj.close()
|
|
354
353
|
self.ChromeObj=None
|
|
355
|
-
|
|
356
354
|
if self.PhantomJsObj:
|
|
357
355
|
self.PhantomJsObj.quit()
|
|
358
356
|
self.PhantomJsObj=None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.2
|
|
2
2
|
Name: kcwebs
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.81
|
|
4
4
|
Summary: kcwebs作为web开发而设计的高性能框架
|
|
5
5
|
Home-page: https://docs.kwebapp.cn/index/index/2
|
|
6
6
|
Author: 百里-坤坤
|
|
@@ -9,5 +9,5 @@ Maintainer: 坤坤
|
|
|
9
9
|
Maintainer-email: fk1402936534@qq.com
|
|
10
10
|
License: MIT License
|
|
11
11
|
Description: kcwebs作为web开发而设计的高性能框架,采用全新的架构思想,注重易用性。遵循MIT开源许可协议发布,意味着个人和企业可以免费使用kcwebs,甚至允许把你基于kcwebs开发的应用开源或商业产品发布或销售。完整文档请访问:https://docs.kwebapp.cn/index/index/2
|
|
12
|
-
Keywords: kcwebs1.
|
|
12
|
+
Keywords: kcwebs1.81
|
|
13
13
|
Platform: UNKNOWN
|
|
@@ -37,12 +37,8 @@ kcwebs/tempfile/kcwebs/app/config/other.py
|
|
|
37
37
|
kcwebs/tempfile/kcwebs/app/config/redis.py
|
|
38
38
|
kcwebs/utill/http.py
|
|
39
39
|
kcwebs/utill/queues.py
|
|
40
|
-
kcwebs/utill/redis.py
|
|
41
|
-
kcwebs/utill/cache/cache.py
|
|
42
40
|
kcwebs/utill/db/model.py
|
|
43
41
|
kcwebs/utill/db/mongodb.py
|
|
44
|
-
kcwebs/utill/db/mysql copy.py
|
|
45
|
-
kcwebs/utill/db/mysql.py
|
|
46
42
|
kcwebs/utill/db/sqlite.py
|
|
47
43
|
kcwebs/utill/selenium3/__init__.py
|
|
48
44
|
kcwebs/utill/selenium3/common/__init__.py
|
|
@@ -144,12 +140,8 @@ kcwebs/tempfile/kcwebs/app/config/other.py
|
|
|
144
140
|
kcwebs/tempfile/kcwebs/app/config/redis.py
|
|
145
141
|
kcwebs/utill/http.py
|
|
146
142
|
kcwebs/utill/queues.py
|
|
147
|
-
kcwebs/utill/redis.py
|
|
148
|
-
kcwebs/utill/cache/cache.py
|
|
149
143
|
kcwebs/utill/db/model.py
|
|
150
144
|
kcwebs/utill/db/mongodb.py
|
|
151
|
-
kcwebs/utill/db/mysql copy.py
|
|
152
|
-
kcwebs/utill/db/mysql.py
|
|
153
145
|
kcwebs/utill/db/sqlite.py
|
|
154
146
|
kcwebs/utill/selenium3/__init__.py
|
|
155
147
|
kcwebs/utill/selenium3/common/__init__.py
|
|
@@ -50,7 +50,7 @@ def start():
|
|
|
50
50
|
packages = b,
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
install_requires = ['kcws>=1.7','
|
|
53
|
+
install_requires = ['kcws>=1.7','kcwmysql>=1','python-dateutil==2.9.0',
|
|
54
54
|
'pymongo==3.10.0','Mako==1.3.6','six>=1.12.0','pillow>=10.0.0',
|
|
55
55
|
# 'websockets==10.4',
|
|
56
56
|
'curl_cffi==0.9.0',
|
|
@@ -58,7 +58,7 @@ def start():
|
|
|
58
58
|
'cssselect<=1.2.0',
|
|
59
59
|
'pyquery==2.0.1',
|
|
60
60
|
'xlrd==1.2.0',
|
|
61
|
-
'pdf2docx==0.5.8',
|
|
61
|
+
'pdf2docx==0.5.8', #CentOS是依赖 sudo yum -y install mesa-libGL
|
|
62
62
|
'openpyxl>=3.0.9','Spire.Pdf==10.12.1','Spire.XLS==14.9.3','spire.Doc==12.6.0'], #第三方包
|
|
63
63
|
package_data = {
|
|
64
64
|
'': ['*.html', '*.js','*.css','*.jpg','*.png','*.gif'],
|
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
import os,sys,time,hashlib,json
|
|
3
|
-
from kcwebs import config
|
|
4
|
-
import redis as red
|
|
5
|
-
# from kcwebs.utill.db.mysql import mysql
|
|
6
|
-
from kcwebs.utill.redis import redis as kcwsredis
|
|
7
|
-
import time,hashlib
|
|
8
|
-
def md5(strs):
|
|
9
|
-
"""md5加密"""
|
|
10
|
-
if not strs:
|
|
11
|
-
return strs
|
|
12
|
-
m = hashlib.md5()
|
|
13
|
-
b = strs.encode(encoding='utf-8')
|
|
14
|
-
m.update(b)
|
|
15
|
-
return m.hexdigest()
|
|
16
|
-
def times():
|
|
17
|
-
"""时间戳 精确到秒"""
|
|
18
|
-
return int(time.time())
|
|
19
|
-
def json_decode(jsonstr):
|
|
20
|
-
"""json字符串转python类型"""
|
|
21
|
-
try:
|
|
22
|
-
return eval(jsonstr)
|
|
23
|
-
except Exception:
|
|
24
|
-
return {}
|
|
25
|
-
def is_index(params,index):
|
|
26
|
-
"""判断列表或字典里的索引是否存在
|
|
27
|
-
|
|
28
|
-
params 列表或字典
|
|
29
|
-
|
|
30
|
-
index 索引值
|
|
31
|
-
|
|
32
|
-
return Boolean类型
|
|
33
|
-
"""
|
|
34
|
-
try:
|
|
35
|
-
params[index]
|
|
36
|
-
except KeyError:
|
|
37
|
-
return False
|
|
38
|
-
except IndexError:
|
|
39
|
-
return False
|
|
40
|
-
else:
|
|
41
|
-
return True
|
|
42
|
-
class cache:
|
|
43
|
-
"开发完善中..."
|
|
44
|
-
__name=None
|
|
45
|
-
__values=None
|
|
46
|
-
__cachepath='' #os.path.split(os.path.realpath(__file__))[0]+'/../../../'
|
|
47
|
-
__config=config.cache
|
|
48
|
-
__redisobj=None
|
|
49
|
-
__mysqlobj=None
|
|
50
|
-
# def __setmysqlonj(self):
|
|
51
|
-
# conf=config.database
|
|
52
|
-
# if 'host' in self.__config and self.__config['host']:
|
|
53
|
-
# conf['host']=[self.__config['host']]
|
|
54
|
-
# if 'port' in self.__config and self.__config['port']:
|
|
55
|
-
# conf['port']=[self.__config['port']]
|
|
56
|
-
# if 'user' in self.__config and self.__config['user']:
|
|
57
|
-
# conf['user']=[self.__config['user']]
|
|
58
|
-
# if 'password' in self.__config and self.__config['password']:
|
|
59
|
-
# conf['password']=[self.__config['password']]
|
|
60
|
-
# if 'db' in self.__config and self.__config['db']:
|
|
61
|
-
# conf['db']=[self.__config['db']]
|
|
62
|
-
# db=mysql()
|
|
63
|
-
# self.__mysqlobj=db.connect(conf)
|
|
64
|
-
def __setredisobj(self):
|
|
65
|
-
"设置redis链接实例"
|
|
66
|
-
conf=config.redis
|
|
67
|
-
if 'host' in self.__config and self.__config['host']:
|
|
68
|
-
conf['host']=self.__config['host']
|
|
69
|
-
if 'port' in self.__config and self.__config['port']:
|
|
70
|
-
conf['port']=self.__config['port']
|
|
71
|
-
if 'password' in self.__config and self.__config['password']:
|
|
72
|
-
conf['password']=self.__config['password']
|
|
73
|
-
if 'db' in self.__config and self.__config['db']:
|
|
74
|
-
conf['db']=self.__config['db']
|
|
75
|
-
if not self.__redisobj:
|
|
76
|
-
self.__redisobj=kcwsredis()
|
|
77
|
-
self.__redisobj.connect(conf)
|
|
78
|
-
def set_cache(self,name,values,expire = 'no'):
|
|
79
|
-
"""设置缓存
|
|
80
|
-
|
|
81
|
-
参数 name:缓存名
|
|
82
|
-
|
|
83
|
-
参数 values:缓存值
|
|
84
|
-
|
|
85
|
-
参数 expire:缓存有效期 0表示永久 单位 秒
|
|
86
|
-
|
|
87
|
-
return Boolean类型
|
|
88
|
-
"""
|
|
89
|
-
# print(name)
|
|
90
|
-
# exit()
|
|
91
|
-
self.__name=name
|
|
92
|
-
self.__values=values
|
|
93
|
-
if expire != 'no':
|
|
94
|
-
self.__config['expire']=int(expire)
|
|
95
|
-
return self.__seltype('set')
|
|
96
|
-
def get_cache(self,name):
|
|
97
|
-
"""获取缓存
|
|
98
|
-
|
|
99
|
-
return 或者的值
|
|
100
|
-
"""
|
|
101
|
-
self.__name=name
|
|
102
|
-
return self.__seltype('get')
|
|
103
|
-
def del_cache(self,name):
|
|
104
|
-
"""删除缓存
|
|
105
|
-
|
|
106
|
-
return Boolean类型
|
|
107
|
-
"""
|
|
108
|
-
self.__name=name
|
|
109
|
-
return self.__seltype('del')
|
|
110
|
-
def set_config(self,congig):
|
|
111
|
-
"""设置缓存配置
|
|
112
|
-
"""
|
|
113
|
-
self.__config=congig
|
|
114
|
-
return self
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
def __seltype(self,types):
|
|
118
|
-
"""选择缓存"""
|
|
119
|
-
# m = hashlib.md5()
|
|
120
|
-
# b = self.__name.encode(encoding='utf-8')
|
|
121
|
-
# m.update(b)
|
|
122
|
-
self.__name=md5(self.__name)
|
|
123
|
-
if self.__config['type'] == 'File':
|
|
124
|
-
if types == 'set':
|
|
125
|
-
return self.__setfilecache()
|
|
126
|
-
elif types=='get':
|
|
127
|
-
return self.__getfilecache()
|
|
128
|
-
elif types=='del':
|
|
129
|
-
return self.__delfilecache()
|
|
130
|
-
elif self.__config['type'] == 'Redis':
|
|
131
|
-
self.__setredisobj()
|
|
132
|
-
if types == 'set':
|
|
133
|
-
return self.__setrediscache()
|
|
134
|
-
elif types=='get':
|
|
135
|
-
return self.__getrediscache()
|
|
136
|
-
elif types=='del':
|
|
137
|
-
return self.__delrediscache()
|
|
138
|
-
# elif self.__config['type'] == 'MySql':
|
|
139
|
-
# self.__setmysqlonj()
|
|
140
|
-
# if types == 'set':
|
|
141
|
-
# return self.__setmysqlcache()
|
|
142
|
-
# elif types == 'get':
|
|
143
|
-
# return self.__getmysqlcache()
|
|
144
|
-
# elif types == 'del':
|
|
145
|
-
# return self.__delmysqlcache()
|
|
146
|
-
elif self.__config['type'] == 'Python':
|
|
147
|
-
if types == 'set':
|
|
148
|
-
return self.__setpythoncache()
|
|
149
|
-
elif types == 'get':
|
|
150
|
-
return self.__getpythoncache()
|
|
151
|
-
elif types == 'del':
|
|
152
|
-
return self.__delpythoncache()
|
|
153
|
-
else:
|
|
154
|
-
raise Exception("缓存类型错误")
|
|
155
|
-
def __setpythoncache(self):
|
|
156
|
-
"""设置python缓存
|
|
157
|
-
|
|
158
|
-
return Boolean类型
|
|
159
|
-
"""
|
|
160
|
-
data={
|
|
161
|
-
'expire':self.__config['expire'],
|
|
162
|
-
'time':times(),
|
|
163
|
-
'values':self.__values
|
|
164
|
-
}
|
|
165
|
-
config.cachevalue[self.__name]=data
|
|
166
|
-
return True
|
|
167
|
-
def __getpythoncache(self):
|
|
168
|
-
"""获取python缓存
|
|
169
|
-
|
|
170
|
-
return 缓存的值
|
|
171
|
-
"""
|
|
172
|
-
try:
|
|
173
|
-
ar=config.cachevalue[self.__name]
|
|
174
|
-
except KeyError:
|
|
175
|
-
return ""
|
|
176
|
-
else:
|
|
177
|
-
if ar['expire'] > 0:
|
|
178
|
-
if (times()-ar['time']) > ar['expire']:
|
|
179
|
-
self.__delpythoncache()
|
|
180
|
-
return ""
|
|
181
|
-
else:
|
|
182
|
-
return ar['values']
|
|
183
|
-
else:
|
|
184
|
-
return ar['values']
|
|
185
|
-
def __delpythoncache(self):
|
|
186
|
-
"""删除python缓存
|
|
187
|
-
|
|
188
|
-
return Boolean类型
|
|
189
|
-
"""
|
|
190
|
-
try:
|
|
191
|
-
del config.cachevalue[self.__name]
|
|
192
|
-
except KeyError:
|
|
193
|
-
pass
|
|
194
|
-
return True
|
|
195
|
-
# def __setmysqlcache(self): ########################################################################################
|
|
196
|
-
# """设置mysql缓存
|
|
197
|
-
|
|
198
|
-
# return Boolean类型
|
|
199
|
-
# """
|
|
200
|
-
# data=[str(self.__values)]
|
|
201
|
-
# strs="["
|
|
202
|
-
# for k in data:
|
|
203
|
-
# strs=strs+k
|
|
204
|
-
# strs=strs+"]"
|
|
205
|
-
# k=self.__mysqlobj.table('fanshukeji_core_cache').where("name",self.__name).count('id')
|
|
206
|
-
# self.__setmysqlonj()
|
|
207
|
-
# if k:
|
|
208
|
-
# return self.__mysqlobj.table('fanshukeji_core_cache').where("name",self.__name).update({"val":strs,"expire":self.__config['expire'],"time":times()})
|
|
209
|
-
# else:
|
|
210
|
-
# return self.__mysqlobj.table('fanshukeji_core_cache').insert({"name":self.__name,"val":strs,"expire":self.__config['expire'],"time":times()})
|
|
211
|
-
# def __getmysqlcache(self):
|
|
212
|
-
# """获取mysql缓存
|
|
213
|
-
|
|
214
|
-
# return 缓存的值
|
|
215
|
-
# """
|
|
216
|
-
# data=self.__mysqlobj.table('fanshukeji_core_cache').where("name",self.__name).find()
|
|
217
|
-
# if data :
|
|
218
|
-
# if data['expire']>0 and times()-data['time']>data['expire']:
|
|
219
|
-
# self.__setmysqlonj()
|
|
220
|
-
# self.__mysqlobj.table('fanshukeji_core_cache').where("name",self.__name).delete()
|
|
221
|
-
# return False
|
|
222
|
-
# else:
|
|
223
|
-
# return eval(data['val'])[0]
|
|
224
|
-
# else:
|
|
225
|
-
# return False
|
|
226
|
-
# def __delmysqlcache(self):
|
|
227
|
-
# """删除mysql缓存
|
|
228
|
-
|
|
229
|
-
# return Boolean类型
|
|
230
|
-
# """
|
|
231
|
-
# return self.__mysqlobj.table('fanshukeji_core_cache').where("name",self.__name).delete()
|
|
232
|
-
def __setrediscache(self):
|
|
233
|
-
"""设置redis缓存
|
|
234
|
-
|
|
235
|
-
return Boolean类型
|
|
236
|
-
"""
|
|
237
|
-
data=self.__values
|
|
238
|
-
try:
|
|
239
|
-
if self.__config['expire']:
|
|
240
|
-
self.__redisobj.set(self.__name,data,self.__config['expire'])
|
|
241
|
-
else:
|
|
242
|
-
self.__redisobj.set(self.__name,data)
|
|
243
|
-
except:
|
|
244
|
-
return False
|
|
245
|
-
return True
|
|
246
|
-
def __getrediscache(self):
|
|
247
|
-
"""获取redis缓存
|
|
248
|
-
|
|
249
|
-
return 缓存的值
|
|
250
|
-
"""
|
|
251
|
-
lists=self.__redisobj.get(self.__name)
|
|
252
|
-
if lists:
|
|
253
|
-
return lists
|
|
254
|
-
else:
|
|
255
|
-
return False
|
|
256
|
-
def __delrediscache(self):
|
|
257
|
-
"""删除redis缓存
|
|
258
|
-
|
|
259
|
-
return int类型
|
|
260
|
-
"""
|
|
261
|
-
return self.__redisobj.delete(self.__name)
|
|
262
|
-
def __setfilecache(self):
|
|
263
|
-
"""设置文件缓存
|
|
264
|
-
|
|
265
|
-
return Boolean类型
|
|
266
|
-
"""
|
|
267
|
-
data={
|
|
268
|
-
'expire':self.__config['expire'],
|
|
269
|
-
'time':times(),
|
|
270
|
-
'values':self.__values
|
|
271
|
-
}
|
|
272
|
-
if not os.path.exists(self.__config['path']):
|
|
273
|
-
os.makedirs(self.__config['path']) #多层创建目录
|
|
274
|
-
f=open(self.__config['path']+"/"+self.__name,"w")
|
|
275
|
-
f.write(str(data))
|
|
276
|
-
f.close()
|
|
277
|
-
return True
|
|
278
|
-
def __getfilecache(self):
|
|
279
|
-
"""获取文件缓存
|
|
280
|
-
|
|
281
|
-
return 缓存的值
|
|
282
|
-
"""
|
|
283
|
-
try:
|
|
284
|
-
f=open(self.__config['path']+"/"+self.__name,"r")
|
|
285
|
-
except Exception:
|
|
286
|
-
return ""
|
|
287
|
-
json_str=f.read()
|
|
288
|
-
f.close()
|
|
289
|
-
ar=json_decode(json_str)
|
|
290
|
-
|
|
291
|
-
if ar and is_index(ar,'expire') and ar['expire'] > 0:
|
|
292
|
-
if (times()-ar['time']) > ar['expire']:
|
|
293
|
-
self.__delfilecache()
|
|
294
|
-
return ""
|
|
295
|
-
else:
|
|
296
|
-
return ar['values']
|
|
297
|
-
elif ar and is_index(ar,'values'):
|
|
298
|
-
return ar['values']
|
|
299
|
-
else:
|
|
300
|
-
return ''
|
|
301
|
-
def __delfilecache(self):
|
|
302
|
-
"""删除文件缓存
|
|
303
|
-
|
|
304
|
-
return Boolean类型
|
|
305
|
-
"""
|
|
306
|
-
if not os.path.exists(self.__config['path']+"/"+self.__name):
|
|
307
|
-
return True
|
|
308
|
-
try:
|
|
309
|
-
os.remove(self.__config['path']+"/"+self.__name)
|
|
310
|
-
except:
|
|
311
|
-
return False
|
|
312
|
-
return True
|