{ "info": { "author": "Vincent", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "FlaskCap\n########\n\nFlaskCap\u662f\u4e00\u4e2a\u57fa\u4e8eflask\u5c01\u88c5\u7684Web\u6846\u67b6\uff0c\u96c6\u6210\u4e86orator\u548cDBUtils\u6765\u63d0\u4f9b\u6570\u636e\u5e93ORM\u53ca\u8fde\u63a5\u6c60\u7684\u652f\u6301\uff0c\u5e76\u5305\u542b\u4e86\u4e00\u4e9b\u5de5\u5177\u7c7b\u548c\u6613\u4e8e\u4f7f\u7528\u7684\u7279\u6027\u3002\n\n\u5b89\u88c5\n====\n\n\u4f7f\u7528pip\u5b89\u88c5\u548c\u66f4\u65b0flaskcap:\n\n.. code-block:: bash\n\n pip install flaskcap\n\n\n\u793a\u4f8b\n====\n\nflaskcap\n--------\n\n* flaskcap \u7684\u4f7f\u7528\u4e0eflask\u4e00\u81f4\u3002\n\n.. code-block:: python\n\n from flaskcap import FlaskCap\n from flaskcap import jsonify\n\n app = FlaskCap(__name__)\n\n @app.route('/foo')\n def foo():\n return 'Hello World'\n\n @app.route('/bar')\n def bar():\n return jsonify({'hello': 'world'})\n\n if __name__ == '__main__':\n app.run()\n\n\n* \u901a\u8fc7 g \u83b7\u53d6\u8bf7\u6c42\u53c2\u6570\n\n::\n\n flaskcap \u5c06HTTP\u8bf7\u6c42\u53c2\u6570(\u6587\u4ef6\u53c2\u6570\u9664\u5916)\u5c01\u88c5\u5728 `g.request_payload` \u4e2d\uff0c\u5305\u542b\u8868\u5355\u53caJSON\u53c2\u6570\u3002\n\n.. code-block:: python\n\n from flaskcap import g, jsonify\n\n @app.route('/', methods=['GET', 'POST'])\n def index():\n return jsonify(g.request_payload)\n\n\n\n* \u65e5\u5fd7\n\n::\n\n flaskcap \u63d0\u4f9b\u4e00\u4e2a\u8de8\u5e73\u53f0\u7684\u53ef\u6309\u65f6\u95f4\u8fdb\u884c\u65e5\u5fd7\u5206\u5272\u7684\u5b9e\u73b0\uff0c`TimedRotatingLogging`\u3002\n \u8be5\u5b9e\u73b0\u662f\u8fdb\u7a0b\u5b89\u5168\u7684\uff0c\u5e76\u4e14\u652f\u6301\u65e5\u5fd7\u6587\u4ef6\u4e22\u5931\u540e\u81ea\u52a8\u91cd\u5efa\u3002\n\n.. code-block:: python\n\n from flaskcap import TimedRotatingLogging\n\n logger_handler = TimedRotatingLogging('app.log', backupCount=7)\n\n\n* \u8bbf\u95ee\u65e5\u5fd7\n\n::\n\n flaskcap \u63d0\u4f9b\u4e86\u8bf7\u6c42\u65e5\u5fd7\u5904\u7406\u7684\u6ce8\u518c\u65b9\u6cd5\uff0c\u5e76\u63d0\u4f9b\u4e86 `elapsed_time` \u503c\u8bb0\u5f55\u8bf7\u6c42\u5904\u7406\u65f6\u95f4\n\n.. code-block:: python\n\n from flaskcap import current_app\n\n app.access_logger.addHandler(NaturalTimedRotating('access.log'))\n\n @app.log_access\n def access_func(request, response):\n current_app.access_logger.info('Request takes %s seconds' % current_app.elapsed_time)\n\n\norm\n----\n\n* orm\u7684\u4f7f\u7528\u4e0eorator\u4e00\u81f4\uff0c\u8bf7\u53c2\u89c1orator\u7684\u4f7f\u7528\u3002\n\n.. code-block:: python\n\n from flaskcap import FlaskCap\n from flaskcap.orator import Orator\n\n app = FlaskCap(__name__)\n\n app.config['DATABASE'] = {\n 'mysql': {\n 'driver': 'mysql',\n 'host': 'localhost',\n 'database': 'db',\n 'user': 'user',\n 'password': 'password',\n # \u662f\u5426\u5f00\u542f\u6162\u67e5\u8be2\u65e5\u5fd7\uff0c\u9ed8\u8ba4\u5173\u95ed\n 'log_slow_query': True,\n # \u6162\u67e5\u8be2\u65f6\u95f4\u9600\u503c(\u6beb\u79d2)\uff0c\u9ed8\u8ba42000\n 'slow_query_time': 3000,\n # \u8fde\u63a5\u6c60\u7b56\u7565\uff0c\u5373DBUtils\u7684\u8fde\u63a5\u6c60\u65b9\u6848\uff0c\u5305\u542b'PersistentDB'\u548c'PooledDB'\u4e24\u79cd\uff0c\n # \u5bf9\u5e94\u914d\u7f6e\u503c\u4e3a'persistent'\u548c'pooled'\uff0c\u9ed8\u8ba4\u4e3a'pooled'\n 'pool_policy': 'persistent',\n # \u5176\u5b83\u8fde\u63a5\u6c60\u53c2\u6570\uff0c\u53c2\u89c1DBUtils\n # 'maxcached': 4,\n # 'maxusage': 10,\n # ...\n }\n }\n\n db = Orator(app)\n # or\n db = Orator()\n db.init_app(app)\n\n # \u67e5\u8be2\n users = db.table('users').all()\n\n # \u5b9a\u4e49Model\n class User(db.Model):\n pass\n\n users = User.all()\n\n\n* \u914d\u7f6e\u6570\u636e\u5e93\u6162\u67e5\u8be2\u65e5\u5fd7\u3002\n\n.. code-block:: python\n\n import logging\n\n from flaskcap.logging import TimedRotatingLogging\n\n # \u5b9a\u4e49\u6162\u67e5\u8be2\u65e5\u5fd7\n slow_query_logger = logging.getLogger('orator.slow_query')\n log_handler = TimedRotatingLogging('slow_query.log', backupCount=7)\n slow_query_logger.addHandler(log_handler)", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "APACHE", "maintainer": "", "maintainer_email": "", "name": "flaskcap", "package_url": "https://pypi.org/project/flaskcap/", "platform": "Unix", "project_url": "https://pypi.org/project/flaskcap/", "project_urls": null, "release_url": "https://pypi.org/project/flaskcap/0.1.9/", "requires_dist": null, "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "summary": "Flask-based web framework, including orm with connection pool", "version": "0.1.9" }, "last_serial": 4966577, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "953317c780482edef079195adb18810a", "sha256": "574663aa325d041abc3cbbd344004d74861f0a6409db8ccc150886fabf0d9d07" }, "downloads": -1, "filename": "flaskcap-0.1.2.tar.gz", "has_sig": false, "md5_digest": "953317c780482edef079195adb18810a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 10402, "upload_time": "2018-10-18T04:35:31", "url": "https://files.pythonhosted.org/packages/f8/66/f8cbc8e0e9e2496b9749c4bcb491e0429246fe71e89d8fcb03810a407054/flaskcap-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7b1659b89490841d66fd3eefaeee1a62", "sha256": "d0d48d02c574cd0fb60c6d55d9373c69c6c0ee42a632957c3d2babbb7d063548" }, "downloads": -1, "filename": "flaskcap-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7b1659b89490841d66fd3eefaeee1a62", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 10395, "upload_time": "2018-10-22T04:15:42", "url": "https://files.pythonhosted.org/packages/b7/01/66888d1b2bc29afdc5da46e6091d11e6c53785eb92ad68483b6c33ccd8a6/flaskcap-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c5224d009b2536e5ea46981cd2a4b9ed", "sha256": "2afff61b012019be4fd9dbcafa5dea6d23abaa618079366e57042ec7d63a97dc" }, "downloads": -1, "filename": "flaskcap-0.1.4.tar.gz", "has_sig": false, "md5_digest": "c5224d009b2536e5ea46981cd2a4b9ed", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 10697, "upload_time": "2018-10-22T16:36:30", "url": "https://files.pythonhosted.org/packages/e5/09/07516ada601af6991bdee7062fc99e213862984b0a65a51dd1112eee5e94/flaskcap-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "100a9111577bdca346efe3447eee4438", "sha256": "79a62e380a15e83a51eeedcdca06b5bde400e4004f54b53d3a4f80a5009edaf7" }, "downloads": -1, "filename": "flaskcap-0.1.5.tar.gz", "has_sig": false, "md5_digest": "100a9111577bdca346efe3447eee4438", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 10701, "upload_time": "2018-10-26T08:30:01", "url": "https://files.pythonhosted.org/packages/22/2d/f68efb3000143417cc6b9280ceb4ae6cdbd3776e32fad6c9c9f834ee2409/flaskcap-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "bcea31c2f8035035e80748d415e0d897", "sha256": "6b46893541b233492a711baa8d05dca49335799a790bd2409fe5c34d1680faa3" }, "downloads": -1, "filename": "flaskcap-0.1.6.tar.gz", "has_sig": false, "md5_digest": "bcea31c2f8035035e80748d415e0d897", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 10589, "upload_time": "2018-10-30T06:51:14", "url": "https://files.pythonhosted.org/packages/10/ff/519f66f0810b5d1b2019e1c2ade933ecdb80c476cb02b49416a288fc8347/flaskcap-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "fc076456372dc58f027b8227bc9bce08", "sha256": "ab349ed990a94603c661ff7f36610d47f03580aef25a7dc340ce0a72d139bb4a" }, "downloads": -1, "filename": "flaskcap-0.1.7.tar.gz", "has_sig": false, "md5_digest": "fc076456372dc58f027b8227bc9bce08", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 11559, "upload_time": "2018-12-20T05:45:31", "url": "https://files.pythonhosted.org/packages/46/13/7ddcf87085dec15f87934cb67ece22c606099d9b541d8044caf7b5a7496b/flaskcap-0.1.7.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "a715971e04e01e9d7fcba5ffdffc1b74", "sha256": "c45f6ceeb0c0ad27669ca1786ea638b416285627953f0f7e9d8795b001b078f9" }, "downloads": -1, "filename": "flaskcap-0.1.9.tar.gz", "has_sig": false, "md5_digest": "a715971e04e01e9d7fcba5ffdffc1b74", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 11535, "upload_time": "2019-03-21T04:59:13", "url": "https://files.pythonhosted.org/packages/bf/aa/6a0f8dc6f60c0a08932660f2ceb3ed09eaa2c99bd522cf5c19d06e187b2e/flaskcap-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a715971e04e01e9d7fcba5ffdffc1b74", "sha256": "c45f6ceeb0c0ad27669ca1786ea638b416285627953f0f7e9d8795b001b078f9" }, "downloads": -1, "filename": "flaskcap-0.1.9.tar.gz", "has_sig": false, "md5_digest": "a715971e04e01e9d7fcba5ffdffc1b74", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,", "size": 11535, "upload_time": "2019-03-21T04:59:13", "url": "https://files.pythonhosted.org/packages/bf/aa/6a0f8dc6f60c0a08932660f2ceb3ed09eaa2c99bd522cf5c19d06e187b2e/flaskcap-0.1.9.tar.gz" } ] }