{ "info": { "author": "Launchpad Developers", "author_email": "launchpad-dev@lists.launchpad.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "**************************************************\npython-oops-amqp: Transmit error reports over amqp\n**************************************************\n\n Copyright (c) 2011, Canonical Ltd\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, version 3 only.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see .\n GNU Lesser General Public License version 3 (see the file LICENSE).\n\nThe oops_amqp package provides an AMQP OOPS http://pypi.python.org/pypi/oops)\npublisher, and a small daemon that listens on amqp for OOPS reports and\nrepublishes them (into a supplied publisher). The OOPS framework permits\nfalling back to additional publishers if AMQP is down.\n\nDependencies\n============\n\n* Python 2.6+\n\n* bson\n\n* oops (http://pypi.python.org/pypi/oops) 0.0.11 or newer.\n\n* amqp\n\nTesting Dependencies\n====================\n\n* oops-datedir-repo (http://pypi.python.org/pypi/oops_datedir_repo)\n\n* rabbitfixture (http://pypi.python.org/pypi/rabbitfixture)\n\n* subunit (http://pypi.python.org/pypi/python-subunit) (optional)\n\n* testresources (http://pypi.python.org/pypi/testresources)\n\n* testtools (http://pypi.python.org/pypi/testtools)\n\nUsage\n=====\n\nPublishing to AMQP\n++++++++++++++++++\n\nWhere you are creating OOPS reports, configure oops_amqp.Publisher. This takes\na connection factory - a simple callable that creates an amqp\nconnection - and the exchange name and routing key to submit to.\n\n >>> factory = partial(amqp.Connection, host=\"localhost:5672\",\n ... userid=\"guest\", password=\"guest\", virtual_host=\"/\")\n >>> publisher = oops_amqp.Publisher(factory, \"oopses\", \"\")\n\nProvide the publisher to your OOPS config::\n\n >>> config = oops.Config()\n >>> config.publisher = publisher\n\nAny oops published via that config will now be sent via amqp.\n\nOOPS ids are generating by hashing the oops message (without the id field) -\nthis ensures unique ids.\n\nThe reason a factory is used is because amqp is not threadsafe - the\npublisher maintains a thread locals object to hold the factories and creates\nconnections when new threads are created(when they first generate an OOPS).\n\nDealing with downtime\n---------------------\n\nFrom time to time your AMQP server may be unavailable. If that happens then\nthe Publisher will not assign an oops id - it will return None to signal that\nthe publication failed. To prevent losing the OOPS its a good idea to have a \nfallback publisher - either another AMQP publisher (to a different server) or\none that spools locally (where you can pick up the OOPSes via rsync or some\nother mechanism. Using the oops standard helper publish_with_fallback will let\nyou wrap the fallback publisher so that it only gets invoked if the primary\nmethod failed::\n\n >>> fallback_factory = partial(amqp.Connection, host=\"otherserver:5672\",\n ... userid=\"guest\", password=\"guest\", virtual_host=\"/\")\n >>> fallback_publisher = oops_amqp.Publisher(fallback_factory, \"oopses\", \"\")\n >>> config.publisher = publish_with_fallback(publisher, fallback_publisher)\n\nReceiving from AMQP\n+++++++++++++++++++\n\nThere is a simple method that will run an infinite loop processing reports from\nAMQP. To use it you need to configure a local config to publish the received\nreports. A full config is used because that includes support for filtering\n(which can be useful if you need to throttle volume, for instance).\nAdditionally you need an amqp connection factory (to handle the amqp server\nbeing restarted) and a queue name to receive from.\n\nThis example uses the DateDirRepo publisher, telling it to accept whatever\nid was assigned by the process publishing to AMQP::\n\n >>> publisher = oops_datedir_repo.DateDirRepo('.', inherit_id=True)\n >>> config = oops.Config()\n >>> config.publisher = publisher.publish\n >>> receiver = oops_amqp.Receiver(config, factory, \"my queue\")\n >>> receiver.run_forever()\n\nFor more information see pydoc oops_amqp.\n\nInstallation\n============\n\nEither run setup.py in an environment with all the dependencies available, or\nadd the working directory to your PYTHONPATH.\n\nDevelopment\n===========\n\nUpstream development takes place at https://launchpad.net/python-oops-amqp.\nTo setup a working area for development, if the dependencies are not\nimmediately available, you can use ./bootstrap.py to create bin/buildout, then\nbin/py to get a python interpreter with the dependencies available.\n\nTo run the tests use the runner of your choice, the test suite is\noops_amqp.tests.test_suite.\n\nFor instance::\n\n $ bin/py -m testtools.run oops_amqp.tests.test_suite\n\nIf you have testrepository you can run the tests with that::\n\n $ testr run", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://launchpad.net/python-oops-amqp", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "oops_amqp", "package_url": "https://pypi.org/project/oops_amqp/", "platform": "", "project_url": "https://pypi.org/project/oops_amqp/", "project_urls": { "Homepage": "https://launchpad.net/python-oops-amqp" }, "release_url": "https://pypi.org/project/oops_amqp/0.1.0/", "requires_dist": null, "requires_python": "", "summary": "OOPS AMQP transport.", "version": "0.1.0" }, "last_serial": 3847348, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "cd659b22f1e10c3e0c29122030df8e5c", "sha256": "48041b0ff868f57d526a22f84733824d65c8fb3c7b32f495b8b45a174c735a1c" }, "downloads": -1, "filename": "oops_amqp-0.0.1.tar.gz", "has_sig": true, "md5_digest": "cd659b22f1e10c3e0c29122030df8e5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5194, "upload_time": "2011-10-10T23:58:07", "url": "https://files.pythonhosted.org/packages/4f/e9/7306e7e0406f98955af1ce52c149e3afa388e00bb8c2309726b64d65a581/oops_amqp-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "fa049d9eb7db77f5bc1e9f056f51c820", "sha256": "a222bd329c6334b39200e824fb69e7ccd94d6a5444d8075ddc9b5648d9a2970d" }, "downloads": -1, "filename": "oops_amqp-0.0.2.tar.gz", "has_sig": true, "md5_digest": "fa049d9eb7db77f5bc1e9f056f51c820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5899, "upload_time": "2011-10-18T05:49:41", "url": "https://files.pythonhosted.org/packages/d4/a1/94f75f2f922cc23ce934b89e39d8b87c4e00afb821b60e36f4b6ac730746/oops_amqp-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "b6cdbd88c7cfeb3af6cd8c4f74847c82", "sha256": "74c268d377afc5245e2a19b79af2b13f0c30c17e10ecc597fc667300ba1d0c85" }, "downloads": -1, "filename": "oops_amqp-0.0.3.tar.gz", "has_sig": true, "md5_digest": "b6cdbd88c7cfeb3af6cd8c4f74847c82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6169, "upload_time": "2011-10-27T05:36:50", "url": "https://files.pythonhosted.org/packages/1a/84/680d10b5c9e6d5120063bc29b9ea0693ec5a5969534980c221c1768779d2/oops_amqp-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "091a393833890b926126703ab6efacf4", "sha256": "fb0e956bba06102c9784936d0b0b22ad4a6f271b3959145ca4310f5a2fa160ba" }, "downloads": -1, "filename": "oops_amqp-0.0.4.tar.gz", "has_sig": true, "md5_digest": "091a393833890b926126703ab6efacf4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6409, "upload_time": "2011-11-01T05:40:20", "url": "https://files.pythonhosted.org/packages/27/1a/8c5e206533e510b7f05bf6c287a524dc4101f19f46e48c5f7a8186428217/oops_amqp-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "e3093addaef7864befa4679d34a14f29", "sha256": "96b7962f5379410cc3dbb05fd24fde90d89c803f6f01c10de746af9a241a798f" }, "downloads": -1, "filename": "oops_amqp-0.0.5.tar.gz", "has_sig": true, "md5_digest": "e3093addaef7864befa4679d34a14f29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6449, "upload_time": "2011-12-08T19:27:06", "url": "https://files.pythonhosted.org/packages/5f/65/17542a3f06ec9c1c7ee635b43bd7f8c162331df682c33c75c9bbbd30117b/oops_amqp-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "182c927cd0cfe93779c97795eaebac3e", "sha256": "a7c3747aaa3a115689a18065a5a07806d9338f6028a119145c10c46d79e9ea3b" }, "downloads": -1, "filename": "oops_amqp-0.0.6.tar.gz", "has_sig": true, "md5_digest": "182c927cd0cfe93779c97795eaebac3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6557, "upload_time": "2012-02-21T22:50:56", "url": "https://files.pythonhosted.org/packages/99/ab/d268636463a9182e25b97a9625d0f488bb8daaaf0fc2950f6162437d5fae/oops_amqp-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "69bfd64e94d70c34233ac07140dc0a44", "sha256": "ccf6c36481b8b455f4722fa39a7a0110d7c4d0202878849f663795b50b1c614d" }, "downloads": -1, "filename": "oops_amqp-0.0.7.tar.gz", "has_sig": true, "md5_digest": "69bfd64e94d70c34233ac07140dc0a44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7404, "upload_time": "2012-08-10T05:04:20", "url": "https://files.pythonhosted.org/packages/5c/fc/08434d9363ebd3a222d1d760a3283b017e0ae0f67b0360ab9658b8849593/oops_amqp-0.0.7.tar.gz" } ], "0.0.8b1": [ { "comment_text": "", "digests": { "md5": "e7bef73ba97fc717c71bd40e9d57b5e1", "sha256": "523f156136c4ceaa8f701748e39bf28ff539fd985eddc9d83428d003659cab42" }, "downloads": -1, "filename": "oops_amqp-0.0.8b1-py2-none-any.whl", "has_sig": false, "md5_digest": "e7bef73ba97fc717c71bd40e9d57b5e1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 33583, "upload_time": "2016-01-19T13:42:39", "url": "https://files.pythonhosted.org/packages/00/1f/9b7de73adad2cf9c310ac45c41ae6e98d3b7317a047d24a680510c22d3cd/oops_amqp-0.0.8b1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df440254fcff08c6541e21e21d952176", "sha256": "d4a040ba63a86ceb2d2fe599deb8c456790425db0f5faac302f8ccefc8f6b0dc" }, "downloads": -1, "filename": "oops_amqp-0.0.8b1.tar.gz", "has_sig": false, "md5_digest": "df440254fcff08c6541e21e21d952176", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7484, "upload_time": "2016-01-19T13:42:46", "url": "https://files.pythonhosted.org/packages/1f/25/ec03432c0ac5d962d10b7ace050d454cbafd8f8bdab53f8c8a79fd510e86/oops_amqp-0.0.8b1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "14db5cd190773b38257640b6eb317653", "sha256": "6bbf9a5565ca87853dc09e86314de9a53a0f4070e0a5807ca3e4135a2074438d" }, "downloads": -1, "filename": "oops_amqp-0.1.0.tar.gz", "has_sig": true, "md5_digest": "14db5cd190773b38257640b6eb317653", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7709, "upload_time": "2018-05-09T12:32:26", "url": "https://files.pythonhosted.org/packages/69/a0/f48e3d5b33a6cb1d2dc1d16a26ccd6eefcc8fde2be443005074b19768178/oops_amqp-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "14db5cd190773b38257640b6eb317653", "sha256": "6bbf9a5565ca87853dc09e86314de9a53a0f4070e0a5807ca3e4135a2074438d" }, "downloads": -1, "filename": "oops_amqp-0.1.0.tar.gz", "has_sig": true, "md5_digest": "14db5cd190773b38257640b6eb317653", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7709, "upload_time": "2018-05-09T12:32:26", "url": "https://files.pythonhosted.org/packages/69/a0/f48e3d5b33a6cb1d2dc1d16a26ccd6eefcc8fde2be443005074b19768178/oops_amqp-0.1.0.tar.gz" } ] }