kcwebs 1.7__tar.gz → 1.8__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.
Files changed (119) hide show
  1. {kcwebs-1.7 → kcwebs-1.8}/PKG-INFO +2 -2
  2. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/__init__.py +1 -1
  3. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/common/autoload.py +60 -39
  4. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/common/session.py +4 -5
  5. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/db/model.py +0 -2
  6. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/http.py +1 -3
  7. {kcwebs-1.7 → kcwebs-1.8}/kcwebs.egg-info/PKG-INFO +2 -2
  8. {kcwebs-1.7 → kcwebs-1.8}/kcwebs.egg-info/SOURCES.txt +0 -8
  9. {kcwebs-1.7 → kcwebs-1.8}/kcwebs.egg-info/requires.txt +1 -2
  10. {kcwebs-1.7 → kcwebs-1.8}/kcwebs.egg-info/top_level.txt +0 -1
  11. {kcwebs-1.7 → kcwebs-1.8}/setup.py +2 -2
  12. kcwebs-1.7/kcwebs/utill/cache/cache.py +0 -312
  13. kcwebs-1.7/kcwebs/utill/db/mysql copy.py +0 -1308
  14. kcwebs-1.7/kcwebs/utill/db/mysql.py +0 -1383
  15. kcwebs-1.7/kcwebs/utill/redis.py +0 -597
  16. {kcwebs-1.7 → kcwebs-1.8}/README.md +0 -0
  17. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/common/__init__.py +0 -0
  18. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/config/__init__.py +0 -0
  19. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/kcwebs.py +0 -0
  20. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/__init__.py +0 -0
  21. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/__init__.py +0 -0
  22. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/common/__init__.py +0 -0
  23. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/common/autoload.py +0 -0
  24. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/__init__.py +0 -0
  25. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/__init__.py +0 -0
  26. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/__init__.py +0 -0
  27. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/autoload.py +0 -0
  28. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/html/include/static.html +0 -0
  29. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/common/model.py +0 -0
  30. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/index.py +0 -0
  31. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/tpl/index/home.html +0 -0
  32. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/api/controller/index/tpl/index/index.html +0 -0
  33. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/common/__init__.py +0 -0
  34. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/common/autoload.py +0 -0
  35. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/common/html/include/static.html +0 -0
  36. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/common/model.py +0 -0
  37. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/config/__init__.py +0 -0
  38. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/config/app.py +0 -0
  39. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/config/database.py +0 -0
  40. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/config/other.py +0 -0
  41. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/app/config/redis.py +0 -0
  42. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/tempfile/kcwebs/server.py +0 -0
  43. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/db/mongodb.py +0 -0
  44. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/db/sqlite.py +0 -0
  45. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/queues.py +0 -0
  46. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/__init__.py +0 -0
  47. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/common/__init__.py +0 -0
  48. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/common/exceptions.py +0 -0
  49. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/__init__.py +0 -0
  50. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/android/__init__.py +0 -0
  51. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/android/webdriver.py +0 -0
  52. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/blackberry/__init__.py +0 -0
  53. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/blackberry/webdriver.py +0 -0
  54. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/chrome/__init__.py +0 -0
  55. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/chrome/options.py +0 -0
  56. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/chrome/remote_connection.py +0 -0
  57. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/chrome/service.py +0 -0
  58. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/chrome/webdriver.py +0 -0
  59. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/__init__.py +0 -0
  60. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/action_chains.py +0 -0
  61. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/alert.py +0 -0
  62. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/by.py +0 -0
  63. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/desired_capabilities.py +0 -0
  64. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/html5/__init__.py +0 -0
  65. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/html5/application_cache.py +0 -0
  66. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/keys.py +0 -0
  67. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/proxy.py +0 -0
  68. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/service.py +0 -0
  69. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/touch_actions.py +0 -0
  70. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/common/utils.py +0 -0
  71. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/edge/__init__.py +0 -0
  72. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/edge/options.py +0 -0
  73. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/edge/service.py +0 -0
  74. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/edge/webdriver.py +0 -0
  75. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/__init__.py +0 -0
  76. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/extension_connection.py +0 -0
  77. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/firefox_binary.py +0 -0
  78. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/firefox_profile.py +0 -0
  79. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/options.py +0 -0
  80. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/remote_connection.py +0 -0
  81. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/service.py +0 -0
  82. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/webdriver.py +0 -0
  83. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/firefox/webelement.py +0 -0
  84. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/ie/__init__.py +0 -0
  85. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/ie/service.py +0 -0
  86. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/ie/webdriver.py +0 -0
  87. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/opera/__init__.py +0 -0
  88. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/opera/options.py +0 -0
  89. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/opera/webdriver.py +0 -0
  90. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/phantomjs/__init__.py +0 -0
  91. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/phantomjs/service.py +0 -0
  92. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/phantomjs/webdriver.py +0 -0
  93. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/__init__.py +0 -0
  94. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/command.py +0 -0
  95. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/errorhandler.py +0 -0
  96. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/file_detector.py +0 -0
  97. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/getAttribute.js +0 -0
  98. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/isDisplayed.js +0 -0
  99. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/mobile.py +0 -0
  100. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/remote_connection.py +0 -0
  101. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/switch_to.py +0 -0
  102. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/utils.py +0 -0
  103. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/webdriver.py +0 -0
  104. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/remote/webelement.py +0 -0
  105. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/safari/__init__.py +0 -0
  106. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/safari/service.py +0 -0
  107. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/safari/webdriver.py +0 -0
  108. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/__init__.py +0 -0
  109. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/abstract_event_listener.py +0 -0
  110. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/color.py +0 -0
  111. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/event_firing_webdriver.py +0 -0
  112. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/events.py +0 -0
  113. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/expected_conditions.py +0 -0
  114. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/select.py +0 -0
  115. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/ui.py +0 -0
  116. {kcwebs-1.7 → kcwebs-1.8}/kcwebs/utill/selenium3/webdriver/support/wait.py +0 -0
  117. {kcwebs-1.7 → kcwebs-1.8}/kcwebs.egg-info/dependency_links.txt +0 -0
  118. {kcwebs-1.7 → kcwebs-1.8}/kcwebs.egg-info/entry_points.txt +0 -0
  119. {kcwebs-1.7 → kcwebs-1.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: kcwebs
3
- Version: 1.7
3
+ Version: 1.8
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.7
12
+ Keywords: kcwebs1.8
13
13
  Platform: UNKNOWN
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- __version__ = '1.7'
2
+ __version__ = '1.8'
3
3
 
4
4
  kcwebsinfo={}
5
5
  kcwebsinfo['name']='kcwebs' #项目的名称
@@ -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
- def fesgrsgtrgtdrhbtdgrrgrgsgtsegr(pdfname,outname,stop_event=None):
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
- folder_path=os.path.dirname(outname)
786
- if folder_path and not os.path.exists(folder_path):
787
- os.makedirs(folder_path, exist_ok=True)
788
- cv = pdf2docx.Converter(pdfname)
789
- cv.convert(outname, start=0, end=None)
790
- cv.close()
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
- return fesgrsgtrgtdrhbtdgrrgrgsgtsegr(pdfname,outname)
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
- thread.join(timeout=timeout)
807
- if thread.is_alive():
808
- raise Exception('tran_pdf_to_docx timeout out')
809
- else:
810
- return True
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
- def M(table=None,confi=None):
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
 
@@ -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 kcwscache.cache().set_cache(name,values,expire)
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 kcwscache.cache().get_cache(name)
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 kcwscache.cache().del_cache(name)
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,
@@ -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 kcwscache.cache().set_config(kcwssession).set_cache(token,value,expire)
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=kcwscache.cache().set_config(kcwssession).get_cache(token)
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
- kcwscache.cache().set_config(kcwssession).del_cache(token)
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
 
@@ -1,6 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
- from .mysql import mysql
3
- from .sqlite import sqlite
4
2
  from kcwebs import config
5
3
  from kcwebs import common
6
4
  class model:
@@ -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.7
3
+ Version: 1.8
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.7
12
+ Keywords: kcwebs1.8
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
@@ -1,6 +1,5 @@
1
1
  kcws>=1.7
2
- PyMySQL==0.9.3
3
- redis==3.3.8
2
+ kcwmysql>=1
4
3
  python-dateutil==2.9.0
5
4
  pymongo==3.10.0
6
5
  Mako==1.3.6
@@ -19,7 +19,6 @@ kcwebs/tempfile/kcwebs/app/common/html
19
19
  kcwebs/tempfile/kcwebs/app/common/html/include
20
20
  kcwebs/tempfile/kcwebs/app/config
21
21
  kcwebs/utill
22
- kcwebs/utill/cache
23
22
  kcwebs/utill/db
24
23
  kcwebs/utill/db/sqlitedata
25
24
  kcwebs/utill/selenium3
@@ -50,7 +50,7 @@ def start():
50
50
  packages = b,
51
51
 
52
52
 
53
- install_requires = ['kcws>=1.7','PyMySQL==0.9.3','redis==3.3.8','python-dateutil==2.9.0',
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