{ "info": { "author": "Paul Bailey", "author_email": "paul.m.bailey@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3" ], "description": "# Collect Stupid - A Faster, Smarter, and Stupider Collect Static for Django\n\nWhen using `collectstatic` with remote file systems like Amazon S3 it can often\nslow down because up to 3 remote operations are needed for each file.\n\n1. Determine file time stamp\n2. Delete file if old\n3. Copy the new file\n\ncollectstupid speeds up your static file deploy with two tricks\n\n1. The Stupid One: Never checks remote file timestamps and never deletes the \n old file. It just overwrites the file blindly. This saves two remote\n operations.\n2. The Smart One: Stores a list of deployed file md5sums on the remote file \n system. This keeps track of what files need to be deployed and md5sums are \n only computed at the source for speed. This can be faster than other \n collectstatic libraries which a lot of times use local cache and thus other \n developers don't benefit from the last deploy. Also the deployment tracking \n is more permanent and not subject to cache clearing unless you explicitly \n need to clear it.\n\n## Installation and Usage\n\n`pip install collectstupid`\n\nAdd **collectstupid** to **INSTALLED_APPS**\n\nRun: `python manage.py collectstupid`\n\n## Storage Mixin\n\nSome storage implementations execute an *exists* and *delete* on the storage\nclass even when using `collectstupid`. You can add the \n**collectstupid.storage.StupidStorageMixin** to your storage class to skip \nthose requests.\n\n## Personal Example Where CollectStupid Improved Deployment Speed\n\nFor a project, whenever we deployed, a huge amount of memory (+13GB) was used \nand the whole process took more than 30 minutes on a fast Mac and over 2 hours \non a virtual machine. Through investigation, we found that every check of \nwhether a file existed caused the bucket to do a full file list because of a\nvery inefficient S3 storage implementation. We implemented `collectstupid` and \nafter the initial deploy of large files, subsequent deploys went down to less\nthan 5 minutes. This also cut down memory usage to almost nothing when compared \nto 13GB.\n\n## Settings\n\n`STUPID_DEPLOY_CACHE`: File where md5sums are stored on the remote filesystem\n\nDefault: collectstupid-cache.json\n\n## Feature requests\n\nFeel free to open an issue", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pizzapanther/collectstupid", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "collectstupid", "package_url": "https://pypi.org/project/collectstupid/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collectstupid/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/pizzapanther/collectstupid" }, "release_url": "https://pypi.org/project/collectstupid/15.11.7/", "requires_dist": null, "requires_python": null, "summary": "A Faster Collect Static (sometimes) for Django", "version": "15.11.7" }, "last_serial": 1833891, "releases": { "15.11.1": [ { "comment_text": "", "digests": { "md5": "ccee64a95edaabc86959b77881e8e05c", "sha256": "cd4a82121df6a741797e85d601fc314ff320a231b2fa5724eee866f3b66e82fa" }, "downloads": -1, "filename": "collectstupid-15.11.1.tar.gz", "has_sig": false, "md5_digest": "ccee64a95edaabc86959b77881e8e05c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1603, "upload_time": "2015-11-09T17:37:44", "url": "https://files.pythonhosted.org/packages/f5/a8/f58a4640feaf10c88bed383247c05e956432df1ff88c350af1daf0875e1b/collectstupid-15.11.1.tar.gz" } ], "15.11.2": [ { "comment_text": "", "digests": { "md5": "7fab9a015abf95cb46297cf46a8d4564", "sha256": "3a36456881a31be366a74bb83a8d57e50be80291d188e30001b6c7410ab1e237" }, "downloads": -1, "filename": "collectstupid-15.11.2.tar.gz", "has_sig": false, "md5_digest": "7fab9a015abf95cb46297cf46a8d4564", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1717, "upload_time": "2015-11-09T17:41:24", "url": "https://files.pythonhosted.org/packages/c1/17/3de74ece0e94b4e717ca713125306803de1b2ec5ab6b1822c0371412707b/collectstupid-15.11.2.tar.gz" } ], "15.11.3": [ { "comment_text": "", "digests": { "md5": "69372d94df11a1a851695c51150efed9", "sha256": "5dccc5bc8fe3cf1f61bc08f5c416131e5ed69d076fb7fec1f3f50fc922f38a33" }, "downloads": -1, "filename": "collectstupid-15.11.3.tar.gz", "has_sig": false, "md5_digest": "69372d94df11a1a851695c51150efed9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2706, "upload_time": "2015-11-10T19:26:04", "url": "https://files.pythonhosted.org/packages/a9/ae/b1ebc50202241297377e1d44a58dcfe695bad697d68a82f9c75e71fb2e05/collectstupid-15.11.3.tar.gz" } ], "15.11.4": [ { "comment_text": "", "digests": { "md5": "113427eb3ba8efed0e954ef668469943", "sha256": "9da6fd6a176183cd653310df06c51bdbdff2d147b280e436e7ac1c091d1ce82a" }, "downloads": -1, "filename": "collectstupid-15.11.4.tar.gz", "has_sig": false, "md5_digest": "113427eb3ba8efed0e954ef668469943", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3127, "upload_time": "2015-11-25T16:57:56", "url": "https://files.pythonhosted.org/packages/d3/40/f4dea968fa9694f354952db08f5ecbedece070a68f3e4dfb6ce65ba13289/collectstupid-15.11.4.tar.gz" } ], "15.11.5": [ { "comment_text": "", "digests": { "md5": "4e5061f195fd927ba4587caa322a7cde", "sha256": "498ad190e8f08016ecf5152cc23eced346c771556eecb9ff64053ac1c6bbd75c" }, "downloads": -1, "filename": "collectstupid-15.11.5.tar.gz", "has_sig": false, "md5_digest": "4e5061f195fd927ba4587caa322a7cde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3190, "upload_time": "2015-11-25T18:20:42", "url": "https://files.pythonhosted.org/packages/31/0e/7339678d04972340ca5c0d29f950401f0d6684117eb5e04906317c5205fa/collectstupid-15.11.5.tar.gz" } ], "15.11.6": [ { "comment_text": "", "digests": { "md5": "7247d1a332022061d9e91628ac116b1a", "sha256": "9e11bab371c65e11204943f4ba96a984c11b9bf4c8189b9ba05beb38bf957f54" }, "downloads": -1, "filename": "collectstupid-15.11.6.tar.gz", "has_sig": false, "md5_digest": "7247d1a332022061d9e91628ac116b1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3236, "upload_time": "2015-11-25T18:47:49", "url": "https://files.pythonhosted.org/packages/2f/74/48085263329e2227bf73b1314ba12c20e75c94de47aeb7ab4f5cafec9244/collectstupid-15.11.6.tar.gz" } ], "15.11.7": [ { "comment_text": "", "digests": { "md5": "fe0c7d46209b6ec705c9ef0fe8fc5769", "sha256": "e6687e28e43e9b0de884f117d5766caf3192931274bb61f1c73de401d59d5179" }, "downloads": -1, "filename": "collectstupid-15.11.7.tar.gz", "has_sig": false, "md5_digest": "fe0c7d46209b6ec705c9ef0fe8fc5769", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3272, "upload_time": "2015-11-25T22:54:15", "url": "https://files.pythonhosted.org/packages/06/f5/6cb98005fe45f1dbad9667cbdd31b291e2870e611daf384fe5edc82119a1/collectstupid-15.11.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fe0c7d46209b6ec705c9ef0fe8fc5769", "sha256": "e6687e28e43e9b0de884f117d5766caf3192931274bb61f1c73de401d59d5179" }, "downloads": -1, "filename": "collectstupid-15.11.7.tar.gz", "has_sig": false, "md5_digest": "fe0c7d46209b6ec705c9ef0fe8fc5769", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3272, "upload_time": "2015-11-25T22:54:15", "url": "https://files.pythonhosted.org/packages/06/f5/6cb98005fe45f1dbad9667cbdd31b291e2870e611daf384fe5edc82119a1/collectstupid-15.11.7.tar.gz" } ] }