{ "info": { "author": "AberSheeran", "author_email": "AberSheeran@outlook.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6" ], "description": "\n# mecache\n\nAn easy-to-use cache module\n\n## How to use\n\nRun `pip install mecache` or `pipenv install mecache` to install.\n\nBuilt-in two cache modes, file cache mode, redis cache mode.\n\nYou can control the time of cache failure by using the cache parameters.\n\n### redis modes\n\n```python\nfrom mecache import Redis\n\n# Refer to https://redis-py.readthedocs.io/en/latest/ for all parameters\nredis = Redis(host=\"127.0.0.1\", port='6379', db=0, password=\"password\")\n\n# Cache failure after 60 seconds\n@redis.cache(60)\ndef do(x, y):\n import time\n time.sleep(2)\n return x+y\n```\n\n### asynchronous redis modes\n\n```python\nfrom mecache import AioRedis\n\n# Refer to https://aioredis.readthedocs.io/en/latest/api_reference.html#aioredis.create_redis_pool for all parameters\nfile = await AioRedis('redis://localhost')\n\n# Cache failure after 60 seconds\n@file.cache(60)\nasync def do(x, y):\n return await do.something\n```\n\n### file modes\n\n```python\nfrom mecache import File\n\n# CACHE_PATH like '/var/tmp/test-cache'\nfile = File(\"CACHE_PATH\")\n\n# Cache failure after 60 seconds\n@file.cache(60)\ndef do(x, y):\n import time\n time.sleep(2)\n return x+y\n```\n\n### asynchronous file modes\n\n```python\nfrom mecache import AioFile\n\n# CACHE_PATH like '/var/tmp/test-cache'\nfile = AioFile(\"CACHE_PATH\")\n\n# Cache failure after 60 seconds\n@file.cache(60)\nasync def do(x, y):\n return await do.something\n```\n\n## Advanced usage\n\nIf the parameters of a function are difficult to serialize using pickle, you can specify the rules that generate key by customizing `keyf`. The return value of the function `keyf` must be a string.\n\n```python\n# a example in django view function\n\ndef key_by_user(request):\n return request.user.username\n\n@file.cache(60*60, keyf=key_by_user)\ndef home(request):\n return render(request, 'home.html')\n```\n\nYou can also overwrite `keyf` for all cache. This is a example:\n\n```python\nfrom mecache import File\n\nclass CustomFile(File):\n @staticmethod\n def keyf(*args, **kwargs):\n string = do.something\n return string\n\nfile = CustomFile(\"CACHE_PATH\")\n```\n\n### Custom made\n\nIf you need a custom cache, you can use `BaseCache` or `AioBaseCache` to create your cache class. Like this\n\n```python\nfrom mecache import BaseCache\n\nclass CustomCache(BaseCache):\n\n def get_cache(self, func, key, max_time):\n qual = func.__qualname__\n return get(qual+\":\"+key)\n\n def set_cache(self, result, func, key, max_time):\n qual = func.__qualname__\n set(qual+\":\"+key, result, ex=time.time()+max_time)\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/AberSheeran/mecache", "keywords": "cache,redis,file,python,asyncio,aiocache", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mecache", "package_url": "https://pypi.org/project/mecache/", "platform": "", "project_url": "https://pypi.org/project/mecache/", "project_urls": { "Homepage": "https://github.com/AberSheeran/mecache" }, "release_url": "https://pypi.org/project/mecache/1.4.1/", "requires_dist": [ "aiofiles", "redis", "aioredis" ], "requires_python": ">=3.6.0", "summary": "An easy-to-use cache module", "version": "1.4.1" }, "last_serial": 5913588, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "4ff6fe7dd4e9af5ed0f2b5e2a7b0af15", "sha256": "7dfa57b5b9289eaf59689baf9c529d425017aa70cae260713a3395598d8e03c1" }, "downloads": -1, "filename": "mecache-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4ff6fe7dd4e9af5ed0f2b5e2a7b0af15", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5026, "upload_time": "2019-04-01T11:03:31", "url": "https://files.pythonhosted.org/packages/2b/f8/390dab86d805ed05089c455a7e18e9a368570ed0215e22b91ed23662f5c6/mecache-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e60f4a46379b006f73ee25417049a24", "sha256": "49ddfd172b8e1112d562a29ffa1460c59aac670c34cbae9c0ac9ba22a5cb30fb" }, "downloads": -1, "filename": "mecache-1.0.0.tar.gz", "has_sig": false, "md5_digest": "1e60f4a46379b006f73ee25417049a24", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4299, "upload_time": "2019-04-01T11:03:33", "url": "https://files.pythonhosted.org/packages/23/be/809826c66b5e485cb9cb9166293b9c2b767606ead4d9c66aaf89dab2611b/mecache-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "3a7cc85c7f6f3a718619a0a568ed89a9", "sha256": "0212d00501425f936cf735cb4f62176573dc5a8367b36d84bb266fcc28363966" }, "downloads": -1, "filename": "mecache-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3a7cc85c7f6f3a718619a0a568ed89a9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5025, "upload_time": "2019-04-09T07:24:27", "url": "https://files.pythonhosted.org/packages/d8/37/b345ce9ca9ea754fb0853764e2457d5591ef23679b715d92c3c166349f72/mecache-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c04a752bdfebd194357327921d4f5c47", "sha256": "2c3a505ffacb4cf9bf7a7eed476ebe249e751821e40c5fcb32d9b195d4cb04ac" }, "downloads": -1, "filename": "mecache-1.0.1.tar.gz", "has_sig": false, "md5_digest": "c04a752bdfebd194357327921d4f5c47", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4299, "upload_time": "2019-04-09T07:24:28", "url": "https://files.pythonhosted.org/packages/41/e7/2fe5684d63722dec67438870c05b9fcdba62ca9e6d63cc4ccb5e57096632/mecache-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "117bc90cb08daddfa65d75f129e5fdb3", "sha256": "ae456b1d130b62119e90f1591d80002e6723b08be222c2fe44a24a71f3788dd2" }, "downloads": -1, "filename": "mecache-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "117bc90cb08daddfa65d75f129e5fdb3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5742, "upload_time": "2019-04-09T08:21:36", "url": "https://files.pythonhosted.org/packages/06/ea/11901db76378e87b4214766684f2e9b63fb895764c201379f51a1a8036e0/mecache-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f4f12bffa2bb359d822ee716e2d7687", "sha256": "1557b19384baf9cb9e0048a553ff34049ca8cb67982deb7c56397acfcc3a3730" }, "downloads": -1, "filename": "mecache-1.1.0.tar.gz", "has_sig": false, "md5_digest": "8f4f12bffa2bb359d822ee716e2d7687", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4501, "upload_time": "2019-04-09T08:21:38", "url": "https://files.pythonhosted.org/packages/e8/ef/b08a1f23367953f2b0b3f83c7fc79f5a17983d474a79237f4fac1e0d77de/mecache-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "77898b51b0ee923d53cc8275f851bf80", "sha256": "151a8d5f9033fce8f5040d1b123e7eba7346b55fc74a1784afaef2b6f0d3b3f7" }, "downloads": -1, "filename": "mecache-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "77898b51b0ee923d53cc8275f851bf80", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5799, "upload_time": "2019-04-12T11:28:04", "url": "https://files.pythonhosted.org/packages/6c/ab/9d8e50bacee3f3d2465329efedb7c3f6ceed11cb579b0a414bfb358b7fa1/mecache-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4bbe55ec6064497664fd0e7882eb052", "sha256": "4a60e47d708cfe2f94fb87a9b878014deb29823ab9f44cf318ce01100c489229" }, "downloads": -1, "filename": "mecache-1.1.1.tar.gz", "has_sig": false, "md5_digest": "f4bbe55ec6064497664fd0e7882eb052", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4569, "upload_time": "2019-04-12T11:28:06", "url": "https://files.pythonhosted.org/packages/37/4e/09c9fbf80a0d235dd5145af2d63987a5d0dfd2a8bdc5c7598a429c83994b/mecache-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "1438d053a1e1d95f71cd97a1d5cbcc0c", "sha256": "87369267c725ae6950f67d7ae9bd17c5a65e3acb0e3bc133bdd3853942c3bb63" }, "downloads": -1, "filename": "mecache-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1438d053a1e1d95f71cd97a1d5cbcc0c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 5907, "upload_time": "2019-04-15T05:21:20", "url": "https://files.pythonhosted.org/packages/cd/98/7eef63aef8a54e4548c93312aecf652d6f2bd098da7cfdc5478908d763e9/mecache-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6bc3d1e616894e87301b6d5ec9100eac", "sha256": "c3a656ed6445b2320ac10434f0f99fdaebfdb42c97208fbd12c2e1189b31d23d" }, "downloads": -1, "filename": "mecache-1.2.0.tar.gz", "has_sig": false, "md5_digest": "6bc3d1e616894e87301b6d5ec9100eac", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4658, "upload_time": "2019-04-15T05:21:22", "url": "https://files.pythonhosted.org/packages/71/f5/d59991753cef75b6e2e8aa2733d448eeb240ee0c79df5a2f85d3ccd83056/mecache-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "472d9e6c1e76eb478e1b40a5a181b72d", "sha256": "1162b4812f1585a64e5c39d44217130903468a88d6c8f50eba56bc97911b8db6" }, "downloads": -1, "filename": "mecache-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "472d9e6c1e76eb478e1b40a5a181b72d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 6104, "upload_time": "2019-06-06T16:22:36", "url": "https://files.pythonhosted.org/packages/ea/25/47d5af073bd069a8c8a323317a6d935a713041f814803987f3bc48a6a216/mecache-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ffc585a2cf71175a7c407cc5def109db", "sha256": "6b4954c929cb6cb9e84e3ec3e83e3f4d06f32e07951510e99405c874e68c6f20" }, "downloads": -1, "filename": "mecache-1.3.0.tar.gz", "has_sig": false, "md5_digest": "ffc585a2cf71175a7c407cc5def109db", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4699, "upload_time": "2019-06-06T16:22:37", "url": "https://files.pythonhosted.org/packages/b7/99/cd46d7db66856d9aa3675fea6e8afb81b1154142059adc032f0d46189867/mecache-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "072ffad8d81eadf82475cbec702b579a", "sha256": "f69339ee08ecd55ae4463ad445813566f4dac5b28f811804db067814a02aefda" }, "downloads": -1, "filename": "mecache-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "072ffad8d81eadf82475cbec702b579a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 6726, "upload_time": "2019-09-29T15:53:56", "url": "https://files.pythonhosted.org/packages/64/5c/c5d96a74665affd96efe3ce8dd01810a157e08f0ba5e6cfc8a7c3da07eae/mecache-1.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "720617c1ac26bbd1f11353c7566ca4a9", "sha256": "53de19532199808796bd56ee2e35b2137f01f75f5fbc8758779d2417341c1a66" }, "downloads": -1, "filename": "mecache-1.4.0.tar.gz", "has_sig": false, "md5_digest": "720617c1ac26bbd1f11353c7566ca4a9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4962, "upload_time": "2019-09-29T15:53:58", "url": "https://files.pythonhosted.org/packages/b4/73/009331b27c2ccb53227d00c885f50e00960b8bbfd7f50a804b985ce1b9ff/mecache-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "935b8a666642d69ab2543cf52ae7cbea", "sha256": "4ecec7342f66ec2f59ffd08cfb24ceeb3047ed0e207aa7f7bacc0bfd8657b5d2" }, "downloads": -1, "filename": "mecache-1.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "935b8a666642d69ab2543cf52ae7cbea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 6712, "upload_time": "2019-10-01T16:20:57", "url": "https://files.pythonhosted.org/packages/0e/94/47e2a85deceb4e9d7286e67215497b4ccae161caa74e0db18489482a6601/mecache-1.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4981a071776e772021fad2bebafc818", "sha256": "1eab88a405ac2fefa86958bb815b601231572ef503d78a7269853cb9e2127228" }, "downloads": -1, "filename": "mecache-1.4.1.tar.gz", "has_sig": false, "md5_digest": "f4981a071776e772021fad2bebafc818", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4945, "upload_time": "2019-10-01T16:20:58", "url": "https://files.pythonhosted.org/packages/50/1e/81c355d4d3d945206dcf537541300fcaf213e84faa6d7cb696629b64c7bd/mecache-1.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "935b8a666642d69ab2543cf52ae7cbea", "sha256": "4ecec7342f66ec2f59ffd08cfb24ceeb3047ed0e207aa7f7bacc0bfd8657b5d2" }, "downloads": -1, "filename": "mecache-1.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "935b8a666642d69ab2543cf52ae7cbea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 6712, "upload_time": "2019-10-01T16:20:57", "url": "https://files.pythonhosted.org/packages/0e/94/47e2a85deceb4e9d7286e67215497b4ccae161caa74e0db18489482a6601/mecache-1.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4981a071776e772021fad2bebafc818", "sha256": "1eab88a405ac2fefa86958bb815b601231572ef503d78a7269853cb9e2127228" }, "downloads": -1, "filename": "mecache-1.4.1.tar.gz", "has_sig": false, "md5_digest": "f4981a071776e772021fad2bebafc818", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4945, "upload_time": "2019-10-01T16:20:58", "url": "https://files.pythonhosted.org/packages/50/1e/81c355d4d3d945206dcf537541300fcaf213e84faa6d7cb696629b64c7bd/mecache-1.4.1.tar.gz" } ] }