{ "info": { "author": "Alexander Bohn", "author_email": "fish2000@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Utilities" ], "description": "\ndjango-signalqueue\n==================\n\nAfter a certain amount of time anyone concerning themselves with the Django framework is going\nto ask the question: *I love Django's signals, indeed. But if only I could dispatch them asynchronously.\nLike, on some other thread or something, I don't really know.... Is that somehow possible?*\n\nWell, now you can easily do that! One contrived yet demonstrative example of such is this:\nyou want to update an event log in your app when a user saves a form, but the update function you wrote does some gnarly aggregation so you can see each datum reflected in real-time. If you call it in a view it beachballs\nboth the running app process and your users' patience.\n\nThat's where django-signalqueue comes in. After you set it up, this is all you need to do:\n\n\n # yourapp/signals.py\n\n from signalqueue import dispatch\n from yourapp.logs import inefficient_log_update_function as log_update\n\n form_submit = dispatch.AsyncSignal(\n providing_args=['instance']) # define an asynchronous signal\n\n form_submit.connect(log_update) # doesn't have to be right here, as long\n # as it runs when the app starts up\n\nNow you can call the function in a view without blocking everything:\n\n # yourapp/views.py\n\n from yourapp import signals, models\n\n def process_form(request):\n pk = save_user_form(request) # your logic here\n obj = models.MyModl.objects.get(pk=pk)\n signals.form_submit.send(instance=obj) # returns quickly!\n return an_http_response_object # eventually return an HttpResponse\n\n\nDjango-signalqueue sticks to Django's naming and calling conventions for signals. It gets out of your\nway and feels familiar, while granting you the power of async calls.\n\n\nWith django-signalqueue, asynchronous dispatch is not even a thing -- that's how easy it is.\n============================================================================================\n\nSetting It Up\n-------------\n\nWatch, I'll show you. First, install django-signalqueue:\n\n $ pip install django-signalqueue # pulls in tornado and django-delegate, if need be\n\n... you may also want some of these optional packages, if you don't have them already:\n\n $ brew install redis # s/brew/apt-get/ to taste\n $ pip install redis hiredis # recommended\n $ pip install ujson # recommended\n $ brew install yajl && pip install czjson yajl simplejson # these work too\n $ pip install nose rednose django-nose # for the tests\n\nAdd django-signalqueue to your `INSTALLED_APPS`, and the settings for a queue, while you're in your `settings.py`:\n\n # settings.py\n\n INSTALLED_APPS = [\n 'signalqueue', # ...\n ]\n\n SQ_QUEUES = {\n 'default': { # a 'default' queue in SQ_QUEUES is required\n 'ENGINE': 'signalqueue.worker.backends.RedisSetQueue', # also required - the queue's driver\n 'INTERVAL': 30, # required - the polling interval (30 <= ~1/3 sec)\n 'OPTIONS': dict(),\n },\n }\n SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # use async dispatch by default\n SQ_WORKER_PORT = 11231 # port to which the worker process binds\n\nBesides all that, you just need a call to `signalqueue.autodiscover()` in your root URLConf:\n\n # urls.py\n\n import signalqueue\n signalqueue.autodiscover()\n\nNow you can define async signals!\n---------------------------------\n\nAsynchronous signals are instances of `signalqueue.dispatch.AsyncSignal` that you've defined in one of the following places:\n\n* `your_app/signals.py` (it's fine if you already use this file, as many do)\n* Modules named in a `settings.SQ_ADDITIONAL_SIGNALS` list or tuple\n* *Coming soon:* `signalqueue.register()` *-- so you can put them anywhere else.*\n\nAsyncSignals are subclasses of the familiar `django.dispatch.Signal` class. As such, you define AsyncSignals much like the Django signals you know and love:\n\n # yourapp/your_callbacks.py\n\n # the callback definition can go anywhere\n def callback(sender, **kwargs):\n print \"I, %s, have been hereby dispatched asynchronously by %s, thanks to django-signalqueue.\" % (\n str(kwargs['instance']),\n sender.__name__)\n\n\n # yourapp/signals.py\n\n from signalqueue.dispatch import AsyncSignal\n from yourapp.your_callbacks import callback\n\n my_signal = AsyncSignal(providing_args=['instance']) # the yuge.\n\n # while you can put your callbacks anywhere, be sure they're connect()-ed to your signals in\n # yourapp/signals.py or another module that loads when the app starts (e.g. models.py)\n\n my_signal.connect(callback)\n\nAt the time of writing, arguments specified the providing_args list are assumed to be Django model instances.\ndjango-signalqueue serializes model instances by looking at:\n\n* the app name - `obj._meta.app_label`,\n* the model's class name - `obj.__class__.__name__.lower()`,\n* and the object's primary key value - `obj.pk`.\n\nYou can define mappings for other object types (the curious can have a look in `signalqueue/mappings.py` for\nhow that works) -- this part of the API is currently in flux as we're working towards the simplest,\nprogrammer-user-friendliest, most-dependency-unshackled method of implementation for the type stuff.\n\nBUT SO ANYWAY. To start up a worker, use the management command `runqueueserver`:\n\n $ python ./manage.py runqueueserver localhost:2345\n +++ django-signalqueue by Alexander Bohn -- http://objectsinspaceandtime.com/\n\n Validating models...0 errors found\n\n Django version 1.4 pre-alpha SVN-16857, using settings 'settings'\n Tornado worker for queue \"default\" binding to http://127.0.0.1:11231/\n Quit the server with CONTROL-C.\n 2011-09-30 15:25:21,098 [INFO] signalqueue: Dequeueing signal: None\n 2011-09-30 15:25:21,400 [INFO] signalqueue: Dequeueing signal: None\n 2011-09-30 15:25:21,701 [INFO] signalqueue: Dequeueing signal: None\n [... et cetera, ad nauseum]\n\n\nThe `runqueueserver` process will sit in the foreground and blurt its output to stdout every time it polls\nthe queue (in ANSI color!) which is handy for debugging your setup.\n\nOnce you've got a worker process running, you can fire one of your signal asynchronously like so:\n\n >>> from yourapp.signals import my_signal\n >>> my_signal.send(sender=AModelClass, instance=a_model_instance)\n\nsend() returns immediately after enqueueing the call, which is pushed onto a stack. The worker process,\nrunning in its own process, pops any available signals off the stack and executes them in its own instance\nof your Django app.\n\nYou can fire async signals synchronously using send_now() -- the call will block until all of the connected\ncallback handlers return (just like a call to a standard signals' send() method):\n\n >>> my_signal.send_now(sender=AModelClass, instance=a_model_instance)\n >>> my_signal.send_now(instance=a_model_instance)\n\nAs with `django.dispatch.Signal.send()`, the sender kwarg is optional if your callback handlers don't expect it.\n\n*Tune in tomorrow for the astonishing conclusion of... the django-signalqueue README!!!!!!*\n", "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/fish2000/django-signalqueue/", "keywords": "django,signals,async,asynchronous,queue", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "django-signalqueue", "package_url": "https://pypi.org/project/django-signalqueue/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-signalqueue/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/fish2000/django-signalqueue/" }, "release_url": "https://pypi.org/project/django-signalqueue/0.5.1/", "requires_dist": null, "requires_python": null, "summary": "Truly asynchronous signal dispatch for Django!", "version": "0.5.1" }, "last_serial": 790615, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "aa2fad5b77ed148c22e739e2feca21ea", "sha256": "924cbbef1433b3f14ed6ca1a1269a6d5327c1f186da8093974af21701e16f2c5" }, "downloads": -1, "filename": "django-signalqueue-0.1.0.tar.gz", "has_sig": false, "md5_digest": "aa2fad5b77ed148c22e739e2feca21ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1801294, "upload_time": "2011-09-18T02:28:39", "url": "https://files.pythonhosted.org/packages/06/b2/d6e042d473bde4432aeb340bbee421366dd34f532fb2af04cbb7bc9136e1/django-signalqueue-0.1.0.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ef7a414f697905e05288e971c99b9184", "sha256": "b690af5660e9e08bb708a9b8dcf31bc111dd630bd239a6bcc2a831b8c9ef8a34" }, "downloads": -1, "filename": "django-signalqueue-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ef7a414f697905e05288e971c99b9184", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25669, "upload_time": "2011-09-20T21:05:00", "url": "https://files.pythonhosted.org/packages/d7/74/058d5108516f2cf37fe33a27d73592f436b75e6cd2c347cc1c3583642e71/django-signalqueue-0.1.2.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "300174d1170f4905fe0e5d8a7f100f84", "sha256": "660d5d674dc6a2ac9cc54c389e00fdec223444dbd8562ffb9df9fc308daccf17" }, "downloads": -1, "filename": "django-signalqueue-0.1.5.tar.gz", "has_sig": false, "md5_digest": "300174d1170f4905fe0e5d8a7f100f84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26660, "upload_time": "2011-09-20T23:21:21", "url": "https://files.pythonhosted.org/packages/d4/84/f7e98ca18ab6efe76f93506f82186a294f7f10a92f287fcdf08a78659f29/django-signalqueue-0.1.5.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "daf874d00a04bd7b25ae1846b96ec92d", "sha256": "174147cfe460e533afbccd4528ac5bb445952eaa3855c8bbeee25758b7e8462a" }, "downloads": -1, "filename": "django-signalqueue-0.1.8.tar.gz", "has_sig": false, "md5_digest": "daf874d00a04bd7b25ae1846b96ec92d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28278, "upload_time": "2011-09-21T22:17:06", "url": "https://files.pythonhosted.org/packages/76/f4/d068c0fb6b69f80691d70aedd9af0d741ac1ea42cc1a81a33c6e7e80ef93/django-signalqueue-0.1.8.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b497127e5000d6f073a223164ecf7e9a", "sha256": "d353618714d619942eb8a9b21f10607bd0f1a2ff0a5fee8a91d5f341b66a219d" }, "downloads": -1, "filename": "django-signalqueue-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b497127e5000d6f073a223164ecf7e9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30555, "upload_time": "2011-09-22T07:03:45", "url": "https://files.pythonhosted.org/packages/cd/59/361562bb60bb407a4906a1d2a038a414759a4073744da36bc50e854af4dd/django-signalqueue-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "112ce726d9c7c52930d28785bc613e8e", "sha256": "99447aa994f91b040ca4841236d144327e0e60b1eaaead893605cc6f3c88b763" }, "downloads": -1, "filename": "django-signalqueue-0.2.1.tar.gz", "has_sig": false, "md5_digest": "112ce726d9c7c52930d28785bc613e8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30810, "upload_time": "2011-09-24T18:02:51", "url": "https://files.pythonhosted.org/packages/f3/ff/9d1e7a9d15751f1e3cab58af6b236ac44b5fae399ee35c6b8ad777c6e616/django-signalqueue-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "9b202bebaa8100cfdac72518675f91ee", "sha256": "87d3ce8d3d44b2d556762f2877a40feb1b0fa74070058d4b6c69893f60eee7f0" }, "downloads": -1, "filename": "django-signalqueue-0.2.2.tar.gz", "has_sig": false, "md5_digest": "9b202bebaa8100cfdac72518675f91ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38541, "upload_time": "2011-09-29T21:44:16", "url": "https://files.pythonhosted.org/packages/3c/47/9dac142d2c4e3d571bc91e7c05360e708d04eded8720f01e50b2da45b2e1/django-signalqueue-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "40b5d56a535d4b39589d5a92213010d9", "sha256": "6976cbe0f27d91bb0bfc9f9966978611b14df5453e634477526bb702e311053a" }, "downloads": -1, "filename": "django-signalqueue-0.2.3.tar.gz", "has_sig": false, "md5_digest": "40b5d56a535d4b39589d5a92213010d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38553, "upload_time": "2011-09-29T21:50:06", "url": "https://files.pythonhosted.org/packages/10/ff/53fc3691780ebf38a53fda7548d4447cb822633775fd4d536b057ef3f850/django-signalqueue-0.2.3.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "81ccdff3ba910573fe096dd999f68be7", "sha256": "6ae9243b45d11ad03cd3e57012f68649fd6cde7647f3ee976af37de7ae24c619" }, "downloads": -1, "filename": "django-signalqueue-0.2.5.tar.gz", "has_sig": false, "md5_digest": "81ccdff3ba910573fe096dd999f68be7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42514, "upload_time": "2011-09-30T22:26:30", "url": "https://files.pythonhosted.org/packages/b3/bb/3d92cf66fc3da128c9480d3e0b42daba2ba10a07306c07226054e6cdb703/django-signalqueue-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "777883b0fb8e1261fd7329622a65b126", "sha256": "0b276f89e8b3bd7c4470510b4ba1c5905a57e365c643a75f8f1fa1d104a5b345" }, "downloads": -1, "filename": "django-signalqueue-0.2.6.tar.gz", "has_sig": false, "md5_digest": "777883b0fb8e1261fd7329622a65b126", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30677, "upload_time": "2011-09-30T22:38:20", "url": "https://files.pythonhosted.org/packages/7c/2f/fbda11906227493e385266429a8d455d4a9050fd9d35f98395bc91a99113/django-signalqueue-0.2.6.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "68c451e0385370a76593a3010715333a", "sha256": "baa0303f735ea22e20c88a70f0db7bf168fa85bb5db34fd899cb9c76498b3c34" }, "downloads": -1, "filename": "django-signalqueue-0.2.8.tar.gz", "has_sig": false, "md5_digest": "68c451e0385370a76593a3010715333a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32634, "upload_time": "2011-10-04T12:23:49", "url": "https://files.pythonhosted.org/packages/2f/ce/238922bfd10735dec606ebe9f7cbdb4e2ac5eebe108b7a5f716c6c34ac3b/django-signalqueue-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "abe5ab021d34a0757c6505835f3d10c9", "sha256": "de656cb99a32948e6c580c456892aca0a0d5f982bb8ae0bb7ef521cfef9124ad" }, "downloads": -1, "filename": "django-signalqueue-0.2.9.tar.gz", "has_sig": false, "md5_digest": "abe5ab021d34a0757c6505835f3d10c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32719, "upload_time": "2011-10-15T14:16:45", "url": "https://files.pythonhosted.org/packages/e5/93/e08494e3cdfee7e1bc67c7e2bc0b254f442292384ca6da91182f0615a562/django-signalqueue-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "727a1b1189accca6381bb87dd16f9f34", "sha256": "e19c14ee4268642badd3ca4b15f119b65043d41f265822ca494a6cf1c209f3c6" }, "downloads": -1, "filename": "django-signalqueue-0.3.0.tar.gz", "has_sig": false, "md5_digest": "727a1b1189accca6381bb87dd16f9f34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45660, "upload_time": "2011-10-15T17:12:10", "url": "https://files.pythonhosted.org/packages/11/51/aaa498840147abe99e707ec335dcce353eb0e42b2933d5f51fbd198395ea/django-signalqueue-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "c84f17642aec8c67dcc27ba9747f4994", "sha256": "25ef0673b45dfa4ee48ab9dbb8eeb6e48446f125080ee89d88eed24f692da4c0" }, "downloads": -1, "filename": "django-signalqueue-0.3.1.tar.gz", "has_sig": false, "md5_digest": "c84f17642aec8c67dcc27ba9747f4994", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45862, "upload_time": "2011-10-16T00:49:51", "url": "https://files.pythonhosted.org/packages/80/76/afcc854237706b17b70940b96cdb6ca0e5e552a49c43e1cffc56aa168347/django-signalqueue-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "d619125d11bb19775a7488263a9b7ab7", "sha256": "b37ac47b814ca941e4fcd3f6aeb8a1f7c1e6fd936ffb0cff832a8030ab8e56bd" }, "downloads": -1, "filename": "django-signalqueue-0.3.2.tar.gz", "has_sig": false, "md5_digest": "d619125d11bb19775a7488263a9b7ab7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48046, "upload_time": "2011-10-25T22:13:10", "url": "https://files.pythonhosted.org/packages/5c/53/cf4280c0af2f9934a2820140d66e8984e1fcd0780332baed89b076d5f9e8/django-signalqueue-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "59d521735bbe3e7ea27fb9b46a40ba1f", "sha256": "e6011d2ccd51bb22738f2c101c234b527591ea8593d15198bd30b6e953de3f1a" }, "downloads": -1, "filename": "django-signalqueue-0.3.3.tar.gz", "has_sig": false, "md5_digest": "59d521735bbe3e7ea27fb9b46a40ba1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48229, "upload_time": "2012-02-01T07:59:13", "url": "https://files.pythonhosted.org/packages/42/23/9bd6c3c98884db64309483b8a96032830b39011acc73d2567c5895b38caa/django-signalqueue-0.3.3.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "42d91b8587c017b205596f88a00183f0", "sha256": "2410c8a80ab41b25e0610ebe82b7d9f4d629ee2583ab18de3201e040907d439b" }, "downloads": -1, "filename": "django-signalqueue-0.3.5.tar.gz", "has_sig": false, "md5_digest": "42d91b8587c017b205596f88a00183f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44916, "upload_time": "2012-03-01T16:41:26", "url": "https://files.pythonhosted.org/packages/b7/9c/bc9fd114180f37b882f7275b0012d47962df29bed91412cf9abd50e614bd/django-signalqueue-0.3.5.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "d3923f8234e8ebc9a36c899beac066cb", "sha256": "26138a4fbc331923e35506d47d9e77d20c1a5e5964c1787ba5df5e1088abec87" }, "downloads": -1, "filename": "django-signalqueue-0.4.2.tar.gz", "has_sig": false, "md5_digest": "d3923f8234e8ebc9a36c899beac066cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 435880, "upload_time": "2012-07-14T20:46:20", "url": "https://files.pythonhosted.org/packages/2d/e3/8946d4b1e8ee1bda4f479b9bebeb3e0deadf8d360c01086d988b1cd87422/django-signalqueue-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "ed866a14e87d0ef43928f68b1f320ba0", "sha256": "df1e902305ff6f5efa423f0197c310e9acb8d63feac0b6bf48e806c7424fc2ab" }, "downloads": -1, "filename": "django-signalqueue-0.4.3.tar.gz", "has_sig": false, "md5_digest": "ed866a14e87d0ef43928f68b1f320ba0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 436260, "upload_time": "2012-07-18T12:27:39", "url": "https://files.pythonhosted.org/packages/3c/8b/0a0edb3f724124ae5ec294ffedb15eecbc28332b452369761354cacae29a/django-signalqueue-0.4.3.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "1806e9927e1f2a68c7a37187bfc392ba", "sha256": "f5f2c4786dfb799e2e4273bb545c08b3f75bd54729ccc02c18b485392877a19b" }, "downloads": -1, "filename": "django-signalqueue-0.4.5.tar.gz", "has_sig": false, "md5_digest": "1806e9927e1f2a68c7a37187bfc392ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 440491, "upload_time": "2012-07-25T01:58:10", "url": "https://files.pythonhosted.org/packages/cb/ff/fb57187ffaca0be381bb29cce685e2f30f1b0a0c1b421134aa9f3a462799/django-signalqueue-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "0b855bd5e634dc4fc3d9acccf551554a", "sha256": "154bd4830d00bcfc83aecce45f28b5b2bc95d26d928777b4f90855ec8b39d2b1" }, "downloads": -1, "filename": "django-signalqueue-0.4.6.tar.gz", "has_sig": false, "md5_digest": "0b855bd5e634dc4fc3d9acccf551554a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 440537, "upload_time": "2012-08-16T14:34:08", "url": "https://files.pythonhosted.org/packages/2e/11/3cec4e936532aedbf7c7e576b4b2bfaaa1986aff8d081abb0c73f8a2e618/django-signalqueue-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "6cbe8bba0b0fc2841e1a3531828d231d", "sha256": "fb1e1a767ef8028a546bf6c11f1f1462829d00169fc886bc5e466a15828248b3" }, "downloads": -1, "filename": "django-signalqueue-0.4.7.tar.gz", "has_sig": false, "md5_digest": "6cbe8bba0b0fc2841e1a3531828d231d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 440568, "upload_time": "2012-08-19T00:58:07", "url": "https://files.pythonhosted.org/packages/63/44/e23ac2b291b044e91fe5a2b4c1b59fe23529be202044e375033513136051/django-signalqueue-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "f17a6f37f819e3049ef0fec00770ac41", "sha256": "39eead9b354d56660c545061a9e01992ca5f93316cce0b9c8fa7d1448425bd1e" }, "downloads": -1, "filename": "django-signalqueue-0.4.8.tar.gz", "has_sig": false, "md5_digest": "f17a6f37f819e3049ef0fec00770ac41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 440561, "upload_time": "2012-08-19T01:07:22", "url": "https://files.pythonhosted.org/packages/70/5e/8038c11527bd28501da13a19859de4483f5496dfa925f9e0e6482416d9d6/django-signalqueue-0.4.8.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "829da1a461f86fc0a54b75500058d6e3", "sha256": "471e8b9d89b6c25af44ad120f9ef76a12b60094eff87236767b7e5c61a579a93" }, "downloads": -1, "filename": "django-signalqueue-0.5.1.tar.gz", "has_sig": false, "md5_digest": "829da1a461f86fc0a54b75500058d6e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 435292, "upload_time": "2012-08-19T05:00:48", "url": "https://files.pythonhosted.org/packages/42/6e/97c1efd37042c99c0a3fafd7d7c28cce5620b77165e28389fc5018236472/django-signalqueue-0.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "829da1a461f86fc0a54b75500058d6e3", "sha256": "471e8b9d89b6c25af44ad120f9ef76a12b60094eff87236767b7e5c61a579a93" }, "downloads": -1, "filename": "django-signalqueue-0.5.1.tar.gz", "has_sig": false, "md5_digest": "829da1a461f86fc0a54b75500058d6e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 435292, "upload_time": "2012-08-19T05:00:48", "url": "https://files.pythonhosted.org/packages/42/6e/97c1efd37042c99c0a3fafd7d7c28cce5620b77165e28389fc5018236472/django-signalqueue-0.5.1.tar.gz" } ] }