{ "info": { "author": "Alexey Minakov", "author_email": "a@spb.host", "bugtrack_url": null, "classifiers": [], "description": "## Flask-Threads\n[![Actions Status](https://github.com/sintezcs/flask-threads/workflows/GitHub%20Build/badge.svg)](https://github.com/sintezcs/flask-threads/actions)\n\nA helper library to work with threads within Flask applications.\n\nThe main problem that you face trying to spin a background thread or running a \nfuture in Flask app - is loosing the application context. The most common \nscenario is to try to access `flask.g` object. Application context \nis a thread local so you can not access it from another thread and Flask will \nraise an exception if you would try to. \n\nThis library provides helper classes that allows you accessing the current \napplication context from another thread.\n\n**Warning! Alpha-version, use at your own risk.**\n\n### Installation\n```bash\n$ pip install Flask-Threads\n```\n\n### Examples\n\n#### Threads\n\n```python\nfrom flask import request\nfrom flask import Flask\nfrom flaskthreads import AppContextThread\n\napp = Flask('my_app')\n\n\n@app.route('/user')\ndef get_user():\n g.user_id = request.headers.get('user-id')\n t = AppContextThread(target=do_some_user_work_in_another_thread)\n t.start()\n t.join()\n return 'ok'\n\n\ndef do_some_user_work_in_another_thread():\n id = g.user_id\n print(id)\n\n```\n\n#### Concurrent futures\n\n```python\nfrom flask import request\nfrom flask import Flask\nfrom flaskthreads import ThreadPoolWithAppContextExecutor\n\napp = Flask('my_app')\n\n\n@app.route('/user')\ndef get_user():\n g.user_id = request.headers.get('user-id')\n with ThreadPoolWithAppContextExecutor(max_workers=2) as pool:\n future = pool.submit(do_some_user_work_in_another_thread)\n future.result()\n return 'ok'\n\n\ndef do_some_user_work_in_another_thread():\n id = g.user_id\n print(id)\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/sintezcs/flask-threads.git", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "Flask-Threads", "package_url": "https://pypi.org/project/Flask-Threads/", "platform": "", "project_url": "https://pypi.org/project/Flask-Threads/", "project_urls": { "Homepage": "https://github.com/sintezcs/flask-threads.git" }, "release_url": "https://pypi.org/project/Flask-Threads/0.0.1a0/", "requires_dist": null, "requires_python": "", "summary": "A helper library to work with threads within Flask applications.", "version": "0.0.1a0" }, "last_serial": 5781789, "releases": { "0.0.1a0": [ { "comment_text": "", "digests": { "md5": "2aaf3f1d0cc7cacdb1c52f23029d55d8", "sha256": "0409180fcde8dceab28d8dbfd4564c03359090dbb64d945b6b269673e55d80a8" }, "downloads": -1, "filename": "Flask_Threads-0.0.1a0-py3.6.egg", "has_sig": false, "md5_digest": "2aaf3f1d0cc7cacdb1c52f23029d55d8", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 7496, "upload_time": "2019-09-04T15:00:45", "url": "https://files.pythonhosted.org/packages/02/93/808402f79bca0abbfc8586e32954326a0249a58ebfb8e6bcb37f30675d36/Flask_Threads-0.0.1a0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "6dfaaab1b6de406e038e7b1159f9554c", "sha256": "388e1146be5ad6b051e13c282d34cac98a2db84ca16120d21759c7f395d67f3a" }, "downloads": -1, "filename": "Flask-Threads-0.0.1a0.tar.gz", "has_sig": false, "md5_digest": "6dfaaab1b6de406e038e7b1159f9554c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4076, "upload_time": "2019-09-04T15:00:43", "url": "https://files.pythonhosted.org/packages/72/97/30531b963968308f7b119588a2cefa0cf33d90c41850dfbccb1f791a7090/Flask-Threads-0.0.1a0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2aaf3f1d0cc7cacdb1c52f23029d55d8", "sha256": "0409180fcde8dceab28d8dbfd4564c03359090dbb64d945b6b269673e55d80a8" }, "downloads": -1, "filename": "Flask_Threads-0.0.1a0-py3.6.egg", "has_sig": false, "md5_digest": "2aaf3f1d0cc7cacdb1c52f23029d55d8", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 7496, "upload_time": "2019-09-04T15:00:45", "url": "https://files.pythonhosted.org/packages/02/93/808402f79bca0abbfc8586e32954326a0249a58ebfb8e6bcb37f30675d36/Flask_Threads-0.0.1a0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "6dfaaab1b6de406e038e7b1159f9554c", "sha256": "388e1146be5ad6b051e13c282d34cac98a2db84ca16120d21759c7f395d67f3a" }, "downloads": -1, "filename": "Flask-Threads-0.0.1a0.tar.gz", "has_sig": false, "md5_digest": "6dfaaab1b6de406e038e7b1159f9554c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4076, "upload_time": "2019-09-04T15:00:43", "url": "https://files.pythonhosted.org/packages/72/97/30531b963968308f7b119588a2cefa0cf33d90c41850dfbccb1f791a7090/Flask-Threads-0.0.1a0.tar.gz" } ] }