Name | sfdevtools JSON |
Version |
1.76.0
JSON |
| download |
home_page | |
Summary | |
upload_time | 2023-07-02 10:39:58 |
maintainer | |
docs_url | None |
author | SulfredLee |
requires_python | >=3.8,<4.0 |
license | |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
## How to publish to pypi
```bash
# set up pypi token
poetry config pypi-token.pypi my-token
# build the project
poetry build
# publish the project
poetry publish
# DONE
```
## Generate source code from protobuf
```bash
$ poetry add grpcio-tools
$ poetry add grpcio
$ cd sfdevtools/
$ poetry run python -m grpc_tools.protoc -I ./grpc_protos --python_out=./grpc_protos/ --grpc_python_out=./grpc_protos/ ./grpc_protos/peacock.proto
```
## Demo example
### Double check lock for singleton
```python
import sfdevtools.observability.log_helper as lh
import logging
logger = lh.init_logger(logger_name="sfdevtools_logger", is_json_output=False)
# create class X
class X(SDC):
pass
# create class Y
class Y(SDC):
pass
A1, A2 = X.instance(), X.instance()
B1, B2 = Y.instance(), Y.instance()
assert A1 is not B1
assert A1 is A2
assert B1 is B2
logger.info('A1 : {}'.format(A1))
logger.info('A2 : {}'.format(A2))
logger.info('B1 : {}'.format(B1))
logger.info('B2 : {}'.format(B2))
```
### Send log to logstash
```python
logger = lh.init_logger(logger_name="connection_tester_logger"
, is_json_output=False
, is_print_to_console=True
, is_print_to_logstash=True
, logstash_host="<the host name>"
, logstash_port=5960
, logstash_user_tags=["Test001", "Test002"])
logger.info("Test Message from test")
logger.error("Test Message from test")
logger.warning("Test Message from test")
```
### Simple function pool
```python
import sfdevtools.observability.log_helper as lh
import sfdevtools.devTools.FuncFifoQ as FuncFifoQ
from functools import partial
from time import sleep
logger = lh.init_logger(logger_name="test_func_fifo_q", is_print_to_console=True, is_json_output=False)
func_q: FuncFifoQ.FuncFifoQ = FuncFifoQ.FuncFifoQ(logger=logger, pool_size=10)
func_q.start_q()
for i in range(10):
func_q.push_func(partial(self.__func_test_foo, i, "hi"))
logger.info("Before sleep")
sleep(2)
logger.info("After sleep")
func_q.stop_q()
```
Expected output:
```bash
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:test_func_fifo_q:144] [MainThread:92105] Before sleep
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-4:92105] Hi from thread: 0
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-8:92105] Hi from thread: 1
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-3:92105] Hi from thread: 2
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-2:92105] Hi from thread: 3
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-9:92105] Hi from thread: 4
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-5:92105] Hi from thread: 5
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-7:92105] Hi from thread: 6
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-10:92105] Hi from thread: 7
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-6:92105] Hi from thread: 8
2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-1:92105] Hi from thread: 9
2023-02-13 13:50:50,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:test_func_fifo_q:146] [MainThread:92105] After sleep
2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-7:92105] End
2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-5:92105] End
2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-4:92105] End
2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-10:92105] End
2023-02-13 13:50:50,567 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-1:92105] End
2023-02-13 13:50:50,567 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-3:92105] End
2023-02-13 13:50:50,567 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-8:92105] End
2023-02-13 13:50:50,568 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-6:92105] End
2023-02-13 13:50:50,568 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-2:92105] End
2023-02-13 13:50:50,568 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-9:92105] End
```
Raw data
{
"_id": null,
"home_page": "",
"name": "sfdevtools",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "",
"keywords": "",
"author": "SulfredLee",
"author_email": "sflee1112@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/0d/e6/116be8640856157431736d3246216a1077e48a1ff3ed7813624fc6eda272/sfdevtools-1.76.0.tar.gz",
"platform": null,
"description": "## How to publish to pypi\n```bash\n# set up pypi token\npoetry config pypi-token.pypi my-token\n\n# build the project\npoetry build\n\n# publish the project\npoetry publish\n\n# DONE\n```\n\n## Generate source code from protobuf\n```bash\n$ poetry add grpcio-tools\n$ poetry add grpcio\n$ cd sfdevtools/\n$ poetry run python -m grpc_tools.protoc -I ./grpc_protos --python_out=./grpc_protos/ --grpc_python_out=./grpc_protos/ ./grpc_protos/peacock.proto\n```\n\n## Demo example\n### Double check lock for singleton\n```python\nimport sfdevtools.observability.log_helper as lh\nimport logging\nlogger = lh.init_logger(logger_name=\"sfdevtools_logger\", is_json_output=False)\n# create class X\nclass X(SDC):\n pass\n\n# create class Y\nclass Y(SDC):\n pass\n\nA1, A2 = X.instance(), X.instance()\nB1, B2 = Y.instance(), Y.instance()\n\nassert A1 is not B1\nassert A1 is A2\nassert B1 is B2\n\nlogger.info('A1 : {}'.format(A1))\nlogger.info('A2 : {}'.format(A2))\nlogger.info('B1 : {}'.format(B1))\nlogger.info('B2 : {}'.format(B2))\n```\n\n### Send log to logstash\n```python\nlogger = lh.init_logger(logger_name=\"connection_tester_logger\"\n , is_json_output=False\n , is_print_to_console=True\n , is_print_to_logstash=True\n , logstash_host=\"<the host name>\"\n , logstash_port=5960\n , logstash_user_tags=[\"Test001\", \"Test002\"])\nlogger.info(\"Test Message from test\")\nlogger.error(\"Test Message from test\")\nlogger.warning(\"Test Message from test\")\n```\n\n### Simple function pool\n```python\nimport sfdevtools.observability.log_helper as lh\nimport sfdevtools.devTools.FuncFifoQ as FuncFifoQ\nfrom functools import partial\nfrom time import sleep\n\nlogger = lh.init_logger(logger_name=\"test_func_fifo_q\", is_print_to_console=True, is_json_output=False)\nfunc_q: FuncFifoQ.FuncFifoQ = FuncFifoQ.FuncFifoQ(logger=logger, pool_size=10)\nfunc_q.start_q()\nfor i in range(10):\n func_q.push_func(partial(self.__func_test_foo, i, \"hi\"))\n\nlogger.info(\"Before sleep\")\nsleep(2)\nlogger.info(\"After sleep\")\n\nfunc_q.stop_q()\n```\n\nExpected output:\n```bash\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:test_func_fifo_q:144] [MainThread:92105] Before sleep\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-4:92105] Hi from thread: 0\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-8:92105] Hi from thread: 1\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-3:92105] Hi from thread: 2\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-2:92105] Hi from thread: 3\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-9:92105] Hi from thread: 4\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-5:92105] Hi from thread: 5\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-7:92105] Hi from thread: 6\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-10:92105] Hi from thread: 7\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-6:92105] Hi from thread: 8\n2023-02-13 13:50:48,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:__func_test_foo:151] [Thread-1:92105] Hi from thread: 9\n2023-02-13 13:50:50,565 [INFO] [test_func_fifo_q] [test_sfdevtools.py:test_func_fifo_q:146] [MainThread:92105] After sleep\n2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-7:92105] End\n2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-5:92105] End\n2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-4:92105] End\n2023-02-13 13:50:50,566 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-10:92105] End\n2023-02-13 13:50:50,567 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-1:92105] End\n2023-02-13 13:50:50,567 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-3:92105] End\n2023-02-13 13:50:50,567 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-8:92105] End\n2023-02-13 13:50:50,568 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-6:92105] End\n2023-02-13 13:50:50,568 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-2:92105] End\n2023-02-13 13:50:50,568 [INFO] [test_func_fifo_q] [FuncFifoQ.py:main:56] [Thread-9:92105] End\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "",
"version": "1.76.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6267fcbab779593fe31d1f0bdebc17fe776685f72505b03079504e963f96d665",
"md5": "edc6746177be1942b58ece66a299e841",
"sha256": "730d61e140d2dc7568ac43a00193dd034569f266b6d03f5643c912c08901bdb1"
},
"downloads": -1,
"filename": "sfdevtools-1.76.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "edc6746177be1942b58ece66a299e841",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 72122,
"upload_time": "2023-07-02T10:39:56",
"upload_time_iso_8601": "2023-07-02T10:39:56.343944Z",
"url": "https://files.pythonhosted.org/packages/62/67/fcbab779593fe31d1f0bdebc17fe776685f72505b03079504e963f96d665/sfdevtools-1.76.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0de6116be8640856157431736d3246216a1077e48a1ff3ed7813624fc6eda272",
"md5": "cc78f4e5fd50311892566da1f0c02f39",
"sha256": "cdd36dfa01af8ff5ea70e0171f7bdd376fe954445e6d3e8f612245fadee4fd9b"
},
"downloads": -1,
"filename": "sfdevtools-1.76.0.tar.gz",
"has_sig": false,
"md5_digest": "cc78f4e5fd50311892566da1f0c02f39",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 47202,
"upload_time": "2023-07-02T10:39:58",
"upload_time_iso_8601": "2023-07-02T10:39:58.813345Z",
"url": "https://files.pythonhosted.org/packages/0d/e6/116be8640856157431736d3246216a1077e48a1ff3ed7813624fc6eda272/sfdevtools-1.76.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-02 10:39:58",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "sfdevtools"
}