{ "info": { "author": "Deep Compute, LLC", "author_email": "contact@deepcompute.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7" ], "description": "FuncServer\n==========\n\n|Build Status| |PyPI version|\n\nSimple and opiniated way to build APIs in Python.\n\nFuncServer An abstraction to implement web accessible servers hosting\nany sort of functionality. This is built on a Tornado core and supports\ninteracting with the server using a web based python terminal making\ndebugging and maintenance easy. In addition the logs emitted by the\nprocess can be viewed from within the web interface.\n\n.. figure:: ./calcserver.png?raw=true\n :alt: Image\n\n Image\n\nInstallation\n------------\n\n.. code:: bash\n\n pip install funcserver\n\nUsage\n-----\n\nBasic example\n~~~~~~~~~~~~~\n\nThe following is the code to implement the most basic Functionality\nServer.\n\n.. code:: python\n\n from funcserver import Server\n\n if __name__ == '__main__':\n Server().start()\n\nRun it by doing\n\n.. code:: bash\n\n python example.py run --debug\n\nThis server is now started and listening on default port 9345 for\ncommands. You can interact with it using the Web UI by visiting\nhttp://localhost:9345/console\n\nIf you want to start it on a different port, do\n\n.. code:: bash\n\n python example.py run --port \n\nThings to do in the Console\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n The Web UI console and logs are enabled only when the ``--debug``\n option is provided.\n\n.. code:: python\n\n # see the objects available in the console env\n >>> dir()\n\n # write a message to log (open the log tab in a new browser window\n # to see the logged message being echoed back). you can use the log\n # tab to observe all the logs being written by the application.\n >>> server.log.warning('something is happening')\n\n # set a different log level\n >>> server.log.setLevel(logging.DEBUG)\n\n # you can import any python module here\n >>> import datetime\n\nCalculation server (another example)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou will find an example script in examples/ called ``calc__server.py``.\n\n.. code:: bash\n\n python examples/calc_server.py\n\nTo use the server's functionality, run the provided example client\nscript in examples/ directory.\n\n.. code:: bash\n\n python examples/calc_client.py\n\nDebugging using PDB\n~~~~~~~~~~~~~~~~~~~\n\nWhen it is required to debug the API code using the Python debugger you\nmay have to trigger the API function from the web based python console.\nHowever due to the design of FuncServer PDB does not work well in the\nscenario (as a result of the output being captured by the python\ninterpretation part of FuncServer). To work around this issue a facility\nhas been provided in the form of the \"call\" utility function available\nin the python console namespace. The usage is show below.\n\nLet us assume that you have pdb trace set in code as follows:\n\n.. code:: python\n\n def some_api_fn(self, a, b):\n import pdb; pdb.set_trace()\n c = a + b\n return c\n\nIf you call this api function as follows then debugging will not work\nand the api call will block from the console.\n\n.. code:: python\n\n >>> api.some_api_fn(10, 20)\n\nInstead do this:\n\n.. code:: python\n\n >>> call(lambda: api.some_api_fn(10, 20))\n\nNow the pdb console will appear in the terminal where you started your\nserver.\n\n.. |Build Status| image:: https://travis-ci.org/deep-compute/funcserver.svg?branch=master\n :target: https://travis-ci.org/deep-compute/funcserver\n.. |PyPI version| image:: https://badge.fury.io/py/funcserver.svg\n :target: https://badge.fury.io/py/funcserver", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/deep-compute/funcserver/tarball/0.2.17", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/deep-compute/funcserver", "keywords": "funcserver", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "funcserver", "package_url": "https://pypi.org/project/funcserver/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/funcserver/", "project_urls": { "Download": "https://github.com/deep-compute/funcserver/tarball/0.2.17", "Homepage": "https://github.com/deep-compute/funcserver" }, "release_url": "https://pypi.org/project/funcserver/0.2.17/", "requires_dist": [ "basescript (>=0.1.6)", "msgpack-python", "requests", "statsd", "tornado" ], "requires_python": "", "summary": "Simple and opiniated way to build APIs in Python", "version": "0.2.17" }, "last_serial": 2760046, "releases": { "0.2.10": [ { "comment_text": "", "digests": { "md5": "d707782d8a31ef488266c264d00f08ce", "sha256": "a28ef65f258970b9ece915ab0bfa9d26a60b52384474ffbbf8b36af630ef3f6a" }, "downloads": -1, "filename": "funcserver-0.2.10-py2-none-any.whl", "has_sig": false, "md5_digest": "d707782d8a31ef488266c264d00f08ce", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247408, "upload_time": "2016-11-15T13:53:21", "url": "https://files.pythonhosted.org/packages/f0/74/325d418ad622f63f6546d9e3e0872132211ffc6411e1b4a9269f1168916d/funcserver-0.2.10-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "45106acedb6a04e2c3d52467b1dea7c0", "sha256": "5fae7c847c9f0eb5aa791d06b5be7ce6bb02e4db8f9ca216adf727410933c741" }, "downloads": -1, "filename": "funcserver-0.2.10.tar.gz", "has_sig": false, "md5_digest": "45106acedb6a04e2c3d52467b1dea7c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 244477, "upload_time": "2016-11-15T13:53:28", "url": "https://files.pythonhosted.org/packages/14/31/3de9e58f406581898372c799b79adcdb756f5a8337d568f26a0537740821/funcserver-0.2.10.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "c1a4a4d52fa5101f6b7e92a61d7498e5", "sha256": "1cb15002c7d588092535b2a72939a973f6475f61570cc8c4d19ce4330b09acfd" }, "downloads": -1, "filename": "funcserver-0.2.12-py2-none-any.whl", "has_sig": false, "md5_digest": "c1a4a4d52fa5101f6b7e92a61d7498e5", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247515, "upload_time": "2016-12-23T07:24:55", "url": "https://files.pythonhosted.org/packages/23/92/7a2e752ed3d3f82e8397546fe0bc68222fca71ebd8be56446c25d9f77cf8/funcserver-0.2.12-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f96577e238c7eed28e1de91527e8142f", "sha256": "f94c599a7fb4f83c4be41eefe369d9368cdb023c825caf1d4caa7a1964fdd111" }, "downloads": -1, "filename": "funcserver-0.2.12.tar.gz", "has_sig": false, "md5_digest": "f96577e238c7eed28e1de91527e8142f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245868, "upload_time": "2016-12-23T07:24:57", "url": "https://files.pythonhosted.org/packages/0e/54/90f451cb844d803e9591c5e3ed852155110ee4badc89c84eb294f83eaa5d/funcserver-0.2.12.tar.gz" } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "5c4f4f407d47e82ed5d79dcb680d6703", "sha256": "56f1cc6c47f91494d70a0b58287c19e8e4234c33f5111a57960d3ede06c4976d" }, "downloads": -1, "filename": "funcserver-0.2.14-py2-none-any.whl", "has_sig": false, "md5_digest": "5c4f4f407d47e82ed5d79dcb680d6703", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247888, "upload_time": "2017-01-17T07:34:27", "url": "https://files.pythonhosted.org/packages/46/b4/1befd7bfeb3c8e21f7b35dc0cbe402a4cc445243f7960cae5d09c0f788ee/funcserver-0.2.14-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54429b3d767396d138c4af8a1d8d9343", "sha256": "c763e58be0da704ab9084271759f890127b2d3820d0ef47d62ad58805f77d920" }, "downloads": -1, "filename": "funcserver-0.2.14.tar.gz", "has_sig": false, "md5_digest": "54429b3d767396d138c4af8a1d8d9343", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245851, "upload_time": "2017-01-17T07:34:29", "url": "https://files.pythonhosted.org/packages/9d/f7/8f33903a05e33c2f9d54f80b158779b428f8062f094b53a8ecc64c67c3d8/funcserver-0.2.14.tar.gz" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "637e83f0cf1aa10d5ef5bafa971b5484", "sha256": "7b908ec9757afb34378a2f1bac2d03342af6381f02f0b6a2f8514b5cc56d4c4b" }, "downloads": -1, "filename": "funcserver-0.2.15-py2-none-any.whl", "has_sig": false, "md5_digest": "637e83f0cf1aa10d5ef5bafa971b5484", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247912, "upload_time": "2017-02-02T06:10:15", "url": "https://files.pythonhosted.org/packages/2a/3d/97633290dd70351ed5e984524d46c948ebec89ef2ea0c978b11bca21975e/funcserver-0.2.15-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6773bf09aed0574ce3a24a51f5a7dbb", "sha256": "74b51215590738840aad21812bc9e59ef1682974fa5fb7e76c764f5968f76ead" }, "downloads": -1, "filename": "funcserver-0.2.15.tar.gz", "has_sig": false, "md5_digest": "a6773bf09aed0574ce3a24a51f5a7dbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245864, "upload_time": "2017-02-02T06:10:17", "url": "https://files.pythonhosted.org/packages/59/5a/d18b2d4ce1763e9734e3d6e9ebb7b7703c88c93bc44a29e8c7f5ffebe267/funcserver-0.2.15.tar.gz" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "bdc4ee43a29ad1be091253f266783082", "sha256": "a569d35de539d83b28349359128373ad6af595ce5eec15c4a680d9c7e0cb0d50" }, "downloads": -1, "filename": "funcserver-0.2.16-py2-none-any.whl", "has_sig": false, "md5_digest": "bdc4ee43a29ad1be091253f266783082", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247459, "upload_time": "2017-02-07T07:16:11", "url": "https://files.pythonhosted.org/packages/85/e6/766a2f168c3b9f1bc8e342d0ced965238d087688e469355bd450e49445c9/funcserver-0.2.16-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "634ad0d6392c61eb7e2732fb98cd57f2", "sha256": "978de561eac14c2447bc0e4252d9ae6eee5f000def2e25a9d4ab37d2d1146c04" }, "downloads": -1, "filename": "funcserver-0.2.16.tar.gz", "has_sig": false, "md5_digest": "634ad0d6392c61eb7e2732fb98cd57f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245564, "upload_time": "2017-02-07T07:16:13", "url": "https://files.pythonhosted.org/packages/0b/48/1e720b01995aa929bf44e5bb743ffe18ec0b929af0477bdb502f78eb7bdd/funcserver-0.2.16.tar.gz" } ], "0.2.17": [ { "comment_text": "", "digests": { "md5": "92f6c6cc2318f9fd3043c81932902680", "sha256": "ffee251943ebe56368eb5182106636cd62915abca8d710e85c08051b25a0f92a" }, "downloads": -1, "filename": "funcserver-0.2.17-py2-none-any.whl", "has_sig": false, "md5_digest": "92f6c6cc2318f9fd3043c81932902680", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247878, "upload_time": "2017-04-07T12:13:00", "url": "https://files.pythonhosted.org/packages/9f/12/7d26e277896a40a45160ccaea61d25543d02ad5ffb94bfe891871a65dcf1/funcserver-0.2.17-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ef0dda570a2b6b5f0406316b514d4a4", "sha256": "9777f768defccbd0c1cf9c220a746f43762fd937e63322ace185e45de81ff427" }, "downloads": -1, "filename": "funcserver-0.2.17.tar.gz", "has_sig": false, "md5_digest": "3ef0dda570a2b6b5f0406316b514d4a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245853, "upload_time": "2017-04-07T12:13:02", "url": "https://files.pythonhosted.org/packages/38/63/0350cce39f2104040408a694ac6004cebb2a42ab369238f69caadba7ae7c/funcserver-0.2.17.tar.gz" } ], "0.2.3": [], "0.2.4": [ { "comment_text": "", "digests": { "md5": "8b08d4da52cd8d6938c6d267cc50dac6", "sha256": "eca75617e331f00f6cdd4bf3ba9abd5d937a9914afce731f4358389de6f5427b" }, "downloads": -1, "filename": "funcserver-0.2.4-py2-none-any.whl", "has_sig": false, "md5_digest": "8b08d4da52cd8d6938c6d267cc50dac6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247337, "upload_time": "2016-10-03T16:08:34", "url": "https://files.pythonhosted.org/packages/a2/6a/643f80cfd640e0f868406b451bc24f74eccb4628ba1e1aa0f5be08460787/funcserver-0.2.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd32507d0d7a9a3de5c981d387e933ca", "sha256": "d2f9a1d93210e2a983092c1c9364f58b9c8c1562ba9b3f2b38e4c3cbcfead328" }, "downloads": -1, "filename": "funcserver-0.2.4.tar.gz", "has_sig": false, "md5_digest": "dd32507d0d7a9a3de5c981d387e933ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 244395, "upload_time": "2016-10-03T16:08:40", "url": "https://files.pythonhosted.org/packages/26/d7/6ff623fadb4da4f167011632dac9faefd246884da86f982776d72c8089ff/funcserver-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "c2882890ba892d139f12967c436bb50a", "sha256": "605e4b3ff0f176a64373d62b14d64cefdb194edcabfd93618763117cc0ac27e3" }, "downloads": -1, "filename": "funcserver-0.2.5-py2-none-any.whl", "has_sig": false, "md5_digest": "c2882890ba892d139f12967c436bb50a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247452, "upload_time": "2016-10-13T07:25:58", "url": "https://files.pythonhosted.org/packages/52/5f/d314f6de04b293800759ee818e935967cf7bb706c5e43f8943a2a2808b71/funcserver-0.2.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40a33e764d6fdebb730d514acea0c4d1", "sha256": "b8065043cc6d72c8e9f06d8b4d4f53b4f330b1fcbb7f6a5e324f3318758c0072" }, "downloads": -1, "filename": "funcserver-0.2.5.tar.gz", "has_sig": false, "md5_digest": "40a33e764d6fdebb730d514acea0c4d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 244510, "upload_time": "2016-10-13T07:26:03", "url": "https://files.pythonhosted.org/packages/3b/b1/7e0d381ae8c242056fab39cedc36012a08ba7f3c6759af08473dcde67f72/funcserver-0.2.5.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "7e1fe6656df09f184e195b4e259f7e75", "sha256": "9c21c76cb55ee23b5a314f82d6e968ca83481a8965ebdf91aa093b05babc5cc7" }, "downloads": -1, "filename": "funcserver-0.2.7-py2-none-any.whl", "has_sig": false, "md5_digest": "7e1fe6656df09f184e195b4e259f7e75", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247428, "upload_time": "2016-10-24T07:28:26", "url": "https://files.pythonhosted.org/packages/f8/4c/108d9f7d0f1cb726c35bf120eaefdc0b8fc8cda782a9c4cbc10c0026ec36/funcserver-0.2.7-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c58ba2bd85e95373aa6bfae863ac5d4c", "sha256": "28282aaae4510480354745b71f841290910f1a24f1bf6c13019c5497bc468d0f" }, "downloads": -1, "filename": "funcserver-0.2.7.tar.gz", "has_sig": false, "md5_digest": "c58ba2bd85e95373aa6bfae863ac5d4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 244496, "upload_time": "2016-10-24T07:28:32", "url": "https://files.pythonhosted.org/packages/c4/4a/e8e551402ebaf8145fd2c8a66deccb0ee846f9997f56b00232bca513f183/funcserver-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "2e2798e4c131a07311b7911ba47e0a13", "sha256": "0ca67a018272de88a77ae1cd994708a6fd579e73bbb9d2317a16f161194c63c2" }, "downloads": -1, "filename": "funcserver-0.2.8-py2-none-any.whl", "has_sig": false, "md5_digest": "2e2798e4c131a07311b7911ba47e0a13", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247405, "upload_time": "2016-10-28T07:35:02", "url": "https://files.pythonhosted.org/packages/51/65/c8b3a0f7086ab5b4dcaee08642fc32c2a462b37b5184376b42f51fbdc108/funcserver-0.2.8-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9bfe41affc936fa997e05a61ff7a606", "sha256": "4e9de62b61b0508b9614c6f806a836cf6a08fbf13de41aa4de230b20babc6566" }, "downloads": -1, "filename": "funcserver-0.2.8.tar.gz", "has_sig": false, "md5_digest": "b9bfe41affc936fa997e05a61ff7a606", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 244475, "upload_time": "2016-10-28T07:35:07", "url": "https://files.pythonhosted.org/packages/a9/af/99f8b5f3beca77ac250af6e2e0a755e325aacb2c53e1a1239f8829ca02e4/funcserver-0.2.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "92f6c6cc2318f9fd3043c81932902680", "sha256": "ffee251943ebe56368eb5182106636cd62915abca8d710e85c08051b25a0f92a" }, "downloads": -1, "filename": "funcserver-0.2.17-py2-none-any.whl", "has_sig": false, "md5_digest": "92f6c6cc2318f9fd3043c81932902680", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 247878, "upload_time": "2017-04-07T12:13:00", "url": "https://files.pythonhosted.org/packages/9f/12/7d26e277896a40a45160ccaea61d25543d02ad5ffb94bfe891871a65dcf1/funcserver-0.2.17-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ef0dda570a2b6b5f0406316b514d4a4", "sha256": "9777f768defccbd0c1cf9c220a746f43762fd937e63322ace185e45de81ff427" }, "downloads": -1, "filename": "funcserver-0.2.17.tar.gz", "has_sig": false, "md5_digest": "3ef0dda570a2b6b5f0406316b514d4a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 245853, "upload_time": "2017-04-07T12:13:02", "url": "https://files.pythonhosted.org/packages/38/63/0350cce39f2104040408a694ac6004cebb2a42ab369238f69caadba7ae7c/funcserver-0.2.17.tar.gz" } ] }