{ "info": { "author": "UNKNOWN", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries" ], "description": "socketpool\n----------\n\nSocketpool - a simple Python socket pool.\n\nSocket pool is a simple socket pool that suports multiple factories and\nbackends. It can easily be used by gevent, eventlet or any other library.\n\nUsage\n-----\n\nsocketpool offers 3 main classes, a `ConnectionPool` class able to\naccept a factory and a backend, `Connector` an interface class\ninherited by all connectors and a default TCP connector `TcpConnector` .\n\n\nExample of a simple echo client using Gevent\n--------------------------------------------\n\n::\n\n import gevent\n from gevent.server import StreamServer\n\n from socketpool import ConnectionPool, TcpConnector\n\n # this handler will be run for each incoming connection\n # in a dedicated greenlet\n def echo(sock, address):\n print ('New connection from %s:%s' % address)\n\n while True:\n data = sock.recv(1024)\n if not data:\n break\n sock.send(data)\n print (\"echoed %r\" % data)\n\n\n\n if __name__ == '__main__':\n import time\n\n options = {'host': 'localhost', 'port': 6000}\n pool = ConnectionPool(factory=TcpConnector, backend=\"gevent\")\n server = StreamServer(('localhost', 6000), echo)\n gevent.spawn(server.serve_forever)\n\n\n def runpool(data):\n print 'ok'\n with pool.connection(**options) as conn:\n print 'sending'\n sent = conn.send(data)\n print 'send %d bytes' % sent\n echo_data = conn.recv(1024)\n print \"got %s\" % data\n assert data == echo_data\n\n start = time.time()\n jobs = [gevent.spawn(runpool, \"blahblah\") for _ in xrange(20)]\n\n gevent.joinall(jobs)\n delay = time.time() - start\n\n\nExample of a connector\n----------------------\n\n::\n\n class TcpConnector(Connector):\n\n def __init__(self, host, port, backend_mod, pool=None):\n self._s = backend_mod.Socket(socket.AF_INET, socket.SOCK_STREAM)\n self._s.connect((host, port))\n self.host = host\n self.port = port\n self._connected = True\n self._life = time.time()\n self._pool = pool\n \n def __del__(self):\n self.release()\n\n def matches(self, **match_options):\n target_host = match_options.get('host')\n target_port = match_options.get('port')\n return target_host == self.host and target_port == self.port\n\n def is_connected(self):\n return self._connected\n\n def handle_exception(self, exception):\n print 'got an exception'\n print str(exception)\n\n def get_lifetime(self):\n return self._life\n\n def invalidate(self):\n self._s.close()\n self._connected = False\n self._life = -1\n\n def release(self):\n if self._pool is not None:\n if self._connected:\n self._pool.release_connection(self)\n else:\n self._pool = None\n\n def send(self, data):\n return self._s.send(data)\n\n def recv(self, size=1024):\n return self._s.recv(size)\n\n\nAuthors\n-------\n\n- Beno\u00eet Chesneau (benoitc) \n- Tarek Ziade (tarek) \n\nLicense\n-------\n\nsocketpool is available in the public domain (see UNLICENSE). socketpool\nis also optionally available under the MIT License (see LICENSE), meant\nespecially for jurisdictions that do not recognize public domain works.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/benoitc/socketpool", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "socketpool", "package_url": "https://pypi.org/project/socketpool/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/socketpool/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/benoitc/socketpool" }, "release_url": "https://pypi.org/project/socketpool/0.5.3/", "requires_dist": null, "requires_python": null, "summary": "Python socket pool", "version": "0.5.3" }, "last_serial": 853177, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "9a3610b4847ae515ff444b8157a8a256", "sha256": "3801643c59d1d09a88c1a9393203cfcea5d58d380e14c5bb548634090529a976" }, "downloads": -1, "filename": "socketpool-0.1.tar.gz", "has_sig": false, "md5_digest": "9a3610b4847ae515ff444b8157a8a256", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7715, "upload_time": "2012-01-24T23:56:51", "url": "https://files.pythonhosted.org/packages/e8/0f/eb003af62afe956c018133bad68dde9034b3118d148e5286bc3e8c92aac4/socketpool-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e0abf4cb2f97b55faa374ab016d0fae5", "sha256": "0310db63f98328c6a260acd47d56f930aaabc96981c730cbf13a1ad2cc0c0468" }, "downloads": -1, "filename": "socketpool-0.1.1.tar.gz", "has_sig": false, "md5_digest": "e0abf4cb2f97b55faa374ab016d0fae5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7722, "upload_time": "2012-01-25T00:33:53", "url": "https://files.pythonhosted.org/packages/e5/5a/26f4d354833a7ff3f494be55c11048930d0075352ea51f24f7915f059624/socketpool-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a8a9d7297251c19ce31dad828842f0f0", "sha256": "76b7acca5b1ecfe251317e13e8473a6e557feecede84f06e899ea4ce9d62d903" }, "downloads": -1, "filename": "socketpool-0.1.2.tar.gz", "has_sig": false, "md5_digest": "a8a9d7297251c19ce31dad828842f0f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7718, "upload_time": "2012-01-25T00:54:29", "url": "https://files.pythonhosted.org/packages/b6/99/88816630333795a7bdef831eaa1dbf607608fff5ead31aa111f51ec83103/socketpool-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "7a39d45e538fd873af43f9145843ac1b", "sha256": "404c66b77173eaa15f0b173b37cdceba8a79e6a6aac35591b4f8ac537c83aa55" }, "downloads": -1, "filename": "socketpool-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7a39d45e538fd873af43f9145843ac1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7761, "upload_time": "2012-01-25T03:09:36", "url": "https://files.pythonhosted.org/packages/c5/a3/208342c2a7c297c6d9fff30baf827261dfd7d2366732c62ac65bd4cbefd0/socketpool-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "83c3847629e9d03d69c9494df5e27a83", "sha256": "39d83472362db2efdfe6dfef237269ba1bf7932744b2208634aeb2820d260f66" }, "downloads": -1, "filename": "socketpool-0.2.0.tar.gz", "has_sig": false, "md5_digest": "83c3847629e9d03d69c9494df5e27a83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7717, "upload_time": "2012-01-26T00:46:15", "url": "https://files.pythonhosted.org/packages/3b/ac/a7bbc7ccd8c63c6686467e3e0b53ab1f57e232b2270515ad3054a94f741c/socketpool-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "502e471dc2904f9301cf6714f2db668f", "sha256": "e56a5024e859a6898c7059543a45cca248873ff89ec94e50d6fc7412fe08bddc" }, "downloads": -1, "filename": "socketpool-0.2.1.tar.gz", "has_sig": false, "md5_digest": "502e471dc2904f9301cf6714f2db668f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7720, "upload_time": "2012-01-26T00:51:37", "url": "https://files.pythonhosted.org/packages/89/8b/c951591907e89d23c1036f2d6df2c23fb096f5567d29ea7ffa4bd684b1b8/socketpool-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "94380d9e13c86b551b6771040cc8eb00", "sha256": "dd8ddfbffcc887d280483786d73943d22f6c2c6d4b4d77151c43f63e678dd8e7" }, "downloads": -1, "filename": "socketpool-0.2.2.tar.gz", "has_sig": false, "md5_digest": "94380d9e13c86b551b6771040cc8eb00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7739, "upload_time": "2012-01-26T03:36:55", "url": "https://files.pythonhosted.org/packages/18/47/0141030e8e1cc9b7346fd51d373adb673694a82c75fc9465c2bd446dddd6/socketpool-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "aa7829958eb5df7f69f43c2946b17956", "sha256": "ee19728d1eec976d952b73929d300337779e5035eb80bd4c3452893dea1a4362" }, "downloads": -1, "filename": "socketpool-0.2.3.tar.gz", "has_sig": false, "md5_digest": "aa7829958eb5df7f69f43c2946b17956", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7748, "upload_time": "2012-01-26T16:05:09", "url": "https://files.pythonhosted.org/packages/8a/59/d10fc5166bbae0e35109e938d76bf60de8b618ba1cf303198395feff8718/socketpool-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0dc2d75bb532ffe97c55202cb872df7e", "sha256": "676aa7aa7b7b3e840fa61bcda5864c7bcd781c6e94ccc3e09b6bd8698f015320" }, "downloads": -1, "filename": "socketpool-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0dc2d75bb532ffe97c55202cb872df7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7903, "upload_time": "2012-01-31T08:52:37", "url": "https://files.pythonhosted.org/packages/d4/7d/ff83f5ff0960179728f572283795809d64b7d71ed14097f3206a15a530b0/socketpool-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "28873db1d04ba04b342fd93d3b1c4d5c", "sha256": "4a40c5ae252518f4af45615e84fed73ef9ee8cfd96060660337ae38ac205bac8" }, "downloads": -1, "filename": "socketpool-0.4.0.tar.gz", "has_sig": false, "md5_digest": "28873db1d04ba04b342fd93d3b1c4d5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9742, "upload_time": "2012-06-05T17:35:49", "url": "https://files.pythonhosted.org/packages/2b/95/eb4dec13c0b114eae6fa6c6107fc9f02bce1e73516f23beaab54ab2283e3/socketpool-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "b8089fdc9d60c820d6c7b6ba34028e39", "sha256": "fb4169771691b296294c837ebc43839ebecd6e98975f1b9e7de4b654ef499926" }, "downloads": -1, "filename": "socketpool-0.4.1.tar.gz", "has_sig": false, "md5_digest": "b8089fdc9d60c820d6c7b6ba34028e39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10343, "upload_time": "2012-06-05T23:51:41", "url": "https://files.pythonhosted.org/packages/ef/31/973f1374ad1552d8f1879b6b4c36b2b7ccc23c4bae4e01a75c356feea9ed/socketpool-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "3eda5677922a90a25c388e4ac3bf30fa", "sha256": "ff564770f458c0dcb40d7c39d56d10bdeb252b705ec5a77bf55c3fda639fe864" }, "downloads": -1, "filename": "socketpool-0.4.2.tar.gz", "has_sig": false, "md5_digest": "3eda5677922a90a25c388e4ac3bf30fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9204, "upload_time": "2012-07-24T11:40:35", "url": "https://files.pythonhosted.org/packages/8d/a5/062c6a15fc5f6cf9bff8d1451041e2931f95dd0880f616f80f1bb3d1b967/socketpool-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "9e68b21f9af838ac9e034023f673b91c", "sha256": "41f8ab915e0d4b56e82d24947a487c662cc0d8839b9035903e7810b0b388d042" }, "downloads": -1, "filename": "socketpool-0.4.3.tar.gz", "has_sig": false, "md5_digest": "9e68b21f9af838ac9e034023f673b91c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9154, "upload_time": "2012-07-28T17:17:17", "url": "https://files.pythonhosted.org/packages/7b/06/319ea985a82d7ecac428c309cba8b29d63dfb157f9f1b28003b7f753957f/socketpool-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "e677caa4ee4fb2c90127525e88a1b3bd", "sha256": "046b753372142cc0776d0470d5853cf498f87e9e0e988c283dd7ce1e17a97442" }, "downloads": -1, "filename": "socketpool-0.4.4.tar.gz", "has_sig": false, "md5_digest": "e677caa4ee4fb2c90127525e88a1b3bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9210, "upload_time": "2012-08-01T12:25:33", "url": "https://files.pythonhosted.org/packages/c5/36/273d67b1a5ae937f7c59f6a7742f0cdaba7680ec60ad19b682beba1315ba/socketpool-0.4.4.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "9be3673685f35b3f4e2de07bbefb5f5b", "sha256": "feb210504ce6f94023d260331243026e215b9dffdc68cc648acaf8378dbab1a6" }, "downloads": -1, "filename": "socketpool-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9be3673685f35b3f4e2de07bbefb5f5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9266, "upload_time": "2012-08-01T18:32:44", "url": "https://files.pythonhosted.org/packages/6f/58/f9b4098a743c98f2b527b66be03da596b56f8d35f88c27e26558393a1b7c/socketpool-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "70656fe8c456c7108c7ddbad098b06e6", "sha256": "801d91f255f4bd4248323c4e8751c90555a818211d3e92a264418122113379b4" }, "downloads": -1, "filename": "socketpool-0.5.1.tar.gz", "has_sig": false, "md5_digest": "70656fe8c456c7108c7ddbad098b06e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10274, "upload_time": "2012-08-05T06:09:28", "url": "https://files.pythonhosted.org/packages/b2/51/8c40e8df0af00f0fa4f75700fa60c3aad111bc826a26364683e2e9b7ada5/socketpool-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "411fb31e4331d26c6fa3cc286adde8ea", "sha256": "5f381048763e26d59ccd8343c2c349c06117ce09154e24f777d8364a1f5d0036" }, "downloads": -1, "filename": "socketpool-0.5.2.tar.gz", "has_sig": false, "md5_digest": "411fb31e4331d26c6fa3cc286adde8ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10351, "upload_time": "2012-08-05T06:34:48", "url": "https://files.pythonhosted.org/packages/08/75/26a9d3a3b67799a134b7a821757168dc7548de88a5909043a57ea2cbb3e4/socketpool-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "24f542abc27293bf40c5223f2f8fb966", "sha256": "a06733434a56c4b60b8fcaa168102d2386253d36425804d55532a6bbbda6e2ec" }, "downloads": -1, "filename": "socketpool-0.5.3.tar.gz", "has_sig": false, "md5_digest": "24f542abc27293bf40c5223f2f8fb966", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9793, "upload_time": "2013-08-30T15:23:12", "url": "https://files.pythonhosted.org/packages/d1/39/fae99a735227234ffec389b252c6de2bc7816bf627f56b4c558dc46c85aa/socketpool-0.5.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "24f542abc27293bf40c5223f2f8fb966", "sha256": "a06733434a56c4b60b8fcaa168102d2386253d36425804d55532a6bbbda6e2ec" }, "downloads": -1, "filename": "socketpool-0.5.3.tar.gz", "has_sig": false, "md5_digest": "24f542abc27293bf40c5223f2f8fb966", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9793, "upload_time": "2013-08-30T15:23:12", "url": "https://files.pythonhosted.org/packages/d1/39/fae99a735227234ffec389b252c6de2bc7816bf627f56b4c558dc46c85aa/socketpool-0.5.3.tar.gz" } ] }