# seatools gunicorn 服务器启动器
该框架在`gunicorn`层完成`seatools.ioc`的加载, 使用该项目后无需在每个进程额外执行`seatools.ioc.run`函数, 仅在启动时传递一个`ioc`启动的函数即可
## 使用指南
1. 安装, `poetry add seatools-starter-server-gunicorn`
2. 这里以`fastapi`为例, 假设`xxx.boot`模块存在`start`的自定义启动`ioc`函数
```python
from seatools.ioc import run
def start():
run(scan_package_names='xxx', config_dir='./config')
```
命令行启动`gunicorn xxx.boot:start xxx.fastapi.app:app`, 其他参数与官方`gunicorn`一致, 在`gunicorn`基础上增加了一个`ioc_app`的参数, 需要指明`ioc`应用启动的函数
若配置`application.yml`或`application-[*].yml`中存在`seatools.server.gunicorn.app`配置, 则可不传递`gunicorn`的`app`仅传递`ioc_app`即可, 示例`gunicorn xxx.boot:start`
若同时使用了`seatools-starter-web-*`的`web`启动包, 则`gunicorn`的`app`直接可省略
4. 支持配置`config/application.yml`
```yaml
seatools:
server:
gunicorn:
# 配置该参数后启动参数可忽略app参数, 配置与官方gunicorn.app.wsgiapp.run一致, 若安装 seatools-starter-web-* 可省略app配置
app: xxx.fastapi.app:app
bind: ':8000'
workers: 2
worker_class: gevent
...
```
Raw data
{
"_id": null,
"home_page": null,
"name": "seatools-starter-server-gunicorn",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "seatools, starter",
"author": null,
"author_email": "seatools-py <521274311@qq.com>",
"download_url": "https://files.pythonhosted.org/packages/7f/93/3020331a9a90f212e96bbb8043dfbe7f074f80820a026ca221a5cc83f661/seatools_starter_server_gunicorn-1.0.0.tar.gz",
"platform": null,
"description": "# seatools gunicorn \u670d\u52a1\u5668\u542f\u52a8\u5668\n\n\u8be5\u6846\u67b6\u5728`gunicorn`\u5c42\u5b8c\u6210`seatools.ioc`\u7684\u52a0\u8f7d, \u4f7f\u7528\u8be5\u9879\u76ee\u540e\u65e0\u9700\u5728\u6bcf\u4e2a\u8fdb\u7a0b\u989d\u5916\u6267\u884c`seatools.ioc.run`\u51fd\u6570, \u4ec5\u5728\u542f\u52a8\u65f6\u4f20\u9012\u4e00\u4e2a`ioc`\u542f\u52a8\u7684\u51fd\u6570\u5373\u53ef\n\n## \u4f7f\u7528\u6307\u5357\n1. \u5b89\u88c5, `poetry add seatools-starter-server-gunicorn`\n2. \u8fd9\u91cc\u4ee5`fastapi`\u4e3a\u4f8b, \u5047\u8bbe`xxx.boot`\u6a21\u5757\u5b58\u5728`start`\u7684\u81ea\u5b9a\u4e49\u542f\u52a8`ioc`\u51fd\u6570\n\n```python\nfrom seatools.ioc import run\n\n\ndef start():\n run(scan_package_names='xxx', config_dir='./config')\n\n```\n\u547d\u4ee4\u884c\u542f\u52a8`gunicorn xxx.boot:start xxx.fastapi.app:app`, \u5176\u4ed6\u53c2\u6570\u4e0e\u5b98\u65b9`gunicorn`\u4e00\u81f4, \u5728`gunicorn`\u57fa\u7840\u4e0a\u589e\u52a0\u4e86\u4e00\u4e2a`ioc_app`\u7684\u53c2\u6570, \u9700\u8981\u6307\u660e`ioc`\u5e94\u7528\u542f\u52a8\u7684\u51fd\u6570\n\u82e5\u914d\u7f6e`application.yml`\u6216`application-[*].yml`\u4e2d\u5b58\u5728`seatools.server.gunicorn.app`\u914d\u7f6e, \u5219\u53ef\u4e0d\u4f20\u9012`gunicorn`\u7684`app`\u4ec5\u4f20\u9012`ioc_app`\u5373\u53ef, \u793a\u4f8b`gunicorn xxx.boot:start`\n\u82e5\u540c\u65f6\u4f7f\u7528\u4e86`seatools-starter-web-*`\u7684`web`\u542f\u52a8\u5305, \u5219`gunicorn`\u7684`app`\u76f4\u63a5\u53ef\u7701\u7565\n4. \u652f\u6301\u914d\u7f6e`config/application.yml`\n```yaml\nseatools:\n server:\n gunicorn:\n # \u914d\u7f6e\u8be5\u53c2\u6570\u540e\u542f\u52a8\u53c2\u6570\u53ef\u5ffd\u7565app\u53c2\u6570, \u914d\u7f6e\u4e0e\u5b98\u65b9gunicorn.app.wsgiapp.run\u4e00\u81f4, \u82e5\u5b89\u88c5 seatools-starter-web-* \u53ef\u7701\u7565app\u914d\u7f6e \n app: xxx.fastapi.app:app\n bind: ':8000'\n workers: 2\n worker_class: gevent\n ...\n \n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Seatools gunicorn server starter.",
"version": "1.0.0",
"project_urls": {
"Homepage": "https://github.com/seatools-py/seatools-starter-server-gunicorn",
"Issues": "https://github.com/seatools-py/seatools-starter-server-gunicorn/issues"
},
"split_keywords": [
"seatools",
" starter"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cc8ffd10d1c9b8478cd2cfd68c00058c8dafef4db83b77849365d3d471c0a0fc",
"md5": "b70d884fd198c13483231404f8de9a37",
"sha256": "c0835deeec3421436cf2cc0c3af74a2bfd1572aa960b288d8eb790f2890f3945"
},
"downloads": -1,
"filename": "seatools_starter_server_gunicorn-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b70d884fd198c13483231404f8de9a37",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 4299,
"upload_time": "2024-12-20T10:55:26",
"upload_time_iso_8601": "2024-12-20T10:55:26.514509Z",
"url": "https://files.pythonhosted.org/packages/cc/8f/fd10d1c9b8478cd2cfd68c00058c8dafef4db83b77849365d3d471c0a0fc/seatools_starter_server_gunicorn-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7f933020331a9a90f212e96bbb8043dfbe7f074f80820a026ca221a5cc83f661",
"md5": "e232c435b42d86a1bb84f6e56398a8fd",
"sha256": "21437f72f346d474aff710692cdaf5255ad4847c31858262c348c47192a14426"
},
"downloads": -1,
"filename": "seatools_starter_server_gunicorn-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "e232c435b42d86a1bb84f6e56398a8fd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 3140,
"upload_time": "2024-12-20T10:55:29",
"upload_time_iso_8601": "2024-12-20T10:55:29.186301Z",
"url": "https://files.pythonhosted.org/packages/7f/93/3020331a9a90f212e96bbb8043dfbe7f074f80820a026ca221a5cc83f661/seatools_starter_server_gunicorn-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-20 10:55:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "seatools-py",
"github_project": "seatools-starter-server-gunicorn",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "seatools-starter-server-gunicorn"
}