{"id":25471527,"url":"https://github.com/zhouyl/celery-task-server","last_synced_at":"2026-02-12T14:32:10.469Z","repository":{"id":77284947,"uuid":"147753631","full_name":"zhouyl/celery-task-server","owner":"zhouyl","description":"一个来源于实际项目中的 celery-task-server 精简版","archived":false,"fork":false,"pushed_at":"2018-10-30T00:58:17.000Z","size":64,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-19T19:43:56.328Z","etag":null,"topics":["celery","celery-tasks","python","task-scheduler"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhouyl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-07T01:28:42.000Z","updated_at":"2025-05-15T07:55:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"2ebe5d67-6047-47e5-84b4-fe211ad6f3ec","html_url":"https://github.com/zhouyl/celery-task-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zhouyl/celery-task-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhouyl%2Fcelery-task-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhouyl%2Fcelery-task-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhouyl%2Fcelery-task-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhouyl%2Fcelery-task-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhouyl","download_url":"https://codeload.github.com/zhouyl/celery-task-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhouyl%2Fcelery-task-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29368688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","celery-tasks","python","task-scheduler"],"created_at":"2025-02-18T09:47:29.495Z","updated_at":"2026-02-12T14:32:10.457Z","avatar_url":"https://github.com/zhouyl.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 数据处理服务 celery-task-server\n\n当前项目使用的是 `python 3.5`，如果你不清楚其与 `2.7` 版本的差异，可以参考这里：https://blog.csdn.net/samxx8/article/details/21535901\n\n## 一、环境配置\n\n建议使用 `vscode` 环境开发本项目。在 `.vscode` 目录中，已经做好了 `autopep8` 自动格式化以及 `python debug` 环境的配置\n\n### 1、安装 virtualenv\n\n```shell\n$ sudo apt-get install python3-pip\n$ pip3 install virtualenv\n$ cd /workspace/sc-data-center\n$ virtualenv --no-site-packages -p /usr/bin/python3 venv\n```\n\n### 2、包管理\n\n导入依赖包\n\n```shell\n$ venv/bin/pip install --upgrade pip # 升级 pip\n$ venv/bin/pip install -r requirements.txt\n$ venv/bin/pip install -r requirements_dev.txt # 开发环境使用这个\n```\n\n如果在后续开发过程中，有新增依赖包，请运行更新命令\n\n```bash\n$ venv/bin/pip freeze \u003e requirements.txt\n```\n\n### 3、选择使用 pyenv\n\n也可以选择使用 pyenv 来替代管理 virtualenv，会更便捷，但可能会出现像我一样遇到的问题：无法检测到系统已安装的 lib\n\n ```shell\n $ sudo apt-get install pyenv\n $ pyenv install 3.5.5rc1\n ```\n\n添加到 ~/.bash_profile 末尾\n\n```shell\nexport PYENV_ROOT=\"${HOME}/.pyenv\"\n\nif [ -d \"${PYENV_ROOT}\" ]; then\n  export PATH=\"${PYENV_ROOT}/bin:${PATH}\"\n  eval \"$(pyenv init -)\"\n  eval \"$(pyenv virtualenv-init -)\"\nfi\n```\n\n刷新 path\n```shell\n$ pyenv rehash\n$ source ~/.bash_profile\n```\n\n安装项目\n```shell\n$ cd /workspace/celery-task-server\n$ echo 'celery-task-server' \u003e .python-version\n$ pyenv virtualenv 3.5.5rc1 celery-task-server\n$ cd -\n$ cd /workspace/celery-task-server # 重新进入该目录，将自动激活 python 版本环境\n$ python --version # 查看 python 版本\n$ pip install -r requirements_dev.txt\n```\n\n## 二、包使用说明\u0026参考文档\n\n该项目中应用到了一些重要的包，这些包提供了不同的项目功能支持。为了兼顾 php 的开发习惯，同时在项目中引入了一些与 php 类似的包。\n\n如果某些包无法查看参考文档（可能因为墙的原因），建议直接通过参考 `venv/lib/python3.5/site-packages` 下的包源代码来学习使用这些包。\n\n### `celery`\n\n这是本项目最重要的一个包，提供任务调度功能，相关帮助信息请参考：http://docs.celeryproject.org/en/latest/index.html\n\n`app/tasks` 目录用于存放 celery 所有的 tasks！\n\n### `var_dump`\n\n这个包提供了像 php var_dump 一样的功能，但在调试比较大的对象时，可能会导出溢出操作，慎重！\n\n```python\nfrom var_dump import var_dump\nfrom var_dump import var_export\n\nd = dict(x=1, y=2)\n\nvar_dump(d)\n'''\n#0 dict(2)\n    ['y'] =\u003e int(2)\n    ['x'] =\u003e int(1)\n'''\n\nprint(var_export(d))\n'''\n#0 dict(2)     ['y'] =\u003e int(2)     ['x'] =\u003e int(1)\n'''\n```\n\n### `arrow`\n\n这是目前 python 中最好用的日期时间处理包，参考文档见：http://arrow.readthedocs.io/\n\n**注意：**\n\n在输出日期时间字符时，记得加上 `to(CONST.TZ)`，例如：`arrow.Arrow.fromtimestamp(1524641352).to('Asia/Shanghai').format()`\n\n### `pendulum`\n\n这是一个仿 php [Carbon](https://github.com/briannesbitt/Carbon) 的包，参考文档地址：https://pendulum.eustace.io/docs/\n\n**注意：**\n\n你可以使用这个类来做一些日期时间的计算，但需要注意的是，这个类的时区并不准！\n因为当你使用 `pendulum.now().set(tz='Asia/Shanghai').format('%Y-%m-%d %H:%M:%S %z')` 输出当前时间时会发现，这并不是一个正确的时间！你应该使用 `arrow` 这个日期时间包！\n\n### `cleo`\n\n这也是一个跟目前 laravel/symfony 框架中 Command 类似的一个包，可以直接查看项目中的示例来熟悉这个包。参考文档地址：http://cleo.readthedocs.io\n\n### `orator`\n\n这个包完全模仿了 laravel database \u0026 eloquent，大部分的使用方法都是类似的。同时，这个包集成了 `cleo`，并提供了许多与 laravel 相同的 make 功能，代码位置在 `venv/lib/python3.5/site-packages/orator/commands`\n\n参考文档：\n- orator\n    - https://orator-orm.com/docs/0.9/\n- laravel database \u0026 eloquent\n    - https://laravel-china.org/docs/laravel/5.6/database\n    - https://laravel-china.org/docs/laravel/5.6/queries\n    - https://laravel-china.org/docs/laravel/5.6/migrations\n    - https://laravel-china.org/docs/laravel/5.6/seeding\n    - https://laravel-china.org/docs/laravel/5.6/eloquent\n\n\n### `backpack`\n\n这是一个仿 php laravel 框架 [Collection](https://github.com/illuminate/support/blob/master/Collection.php) 的包，能够让我们便捷的操作 python 的 `tuple`, `list`, `map` (不支持 `dict`)。\n\n可以参考这些文档：\n\n- https://github.com/sdispater/backpack\n- https://laravel-china.org/docs/laravel/5.6/collections (laravel)\n\n使用参考：\n\n```python\nfrom backpack import collect\n\nd = [dict(x=1, y=2), dict(x=3, y=4)]\n\nprint(collect(d).all()) # [{'y': 2, 'x': 1}, {'y': 4, 'x': 3}]\nprint(collect(d).first()) # {'y': 2, 'x': 1}\nprint(collect(d).where('x', 1).all()) # [{'y': 2, 'x': 1}]\nprint(collect(d).pluck('x').all()) # [1, 3]\n```\n\n### `pymitter`\n\n这个包提供了事件管理与分发，并通过 decorator 修饰符来定义事件的行为。参考文档：https://github.com/riga/pymitter\n\n使用参考：\n\n```python\nfrom pymitter import EventEmitter\n\nee = EventEmitter(wildcards=True)\n\n@ee.on(\"myevent.foo\")\ndef handler1():\n    print(\"handler1 called\")\n\n@ee.on(\"myevent.bar\")\ndef handler2():\n    print(\"handler2 called\")\n\n@ee.on(\"myevent.*\") # 可使用通配符来定义事件触发\ndef hander3():\n    print(\"handler3 called\")\n\n\nee.emit(\"myevent.foo\")\n# -\u003e \"handler1 called\"\n# -\u003e \"handler3 called\"\n\nee.emit(\"myevent.bar\")\n# -\u003e \"handler2 called\"\n# -\u003e \"handler3 called\"\n\nee.emit(\"myevent.*\")\n# -\u003e \"handler1 called\"\n# -\u003e \"handler2 called\"\n# -\u003e \"handler3 called\"\n```\n\n## 三、项目结构说明\n\n    .\n    ├── app (项目目录)\n    │   ├── commands (commands 命令目录)\n    │   ├── helpers (项目支持函数目录)\n    │   │   ├── application.py (项目相关)\n    │   │   ├── common.py (通用函数)\n    │   │   ├── constants.py (常量定义)\n    │   │   ├── database.py (数据库相关)\n    │   │   ├── datetime.py (日期时间相关函数)\n    │   │   ├── dictionary.py (dict 辅助函数)\n    │   │   └── valid.py (验证函数)\n    │   ├── logics (业务逻辑代码目录)\n    │   ├── providers (服务提供者目录)\n    │   ├── tasks (celery 任务代码目录)\n    │   ├── tests (单元测试代码目录)\n    │   ├── command.py (command入口)\n    │   ├── unittests.py (单元测试入口)\n    │   └── utils (工具库)\n    ├── bin (项目管理脚本目录)\n    │   ├── celery.beat.sh (celery beat 调度器管理脚本)\n    │   ├── celery.flower.sh (celery web 控制台管理脚本)\n    │   ├── celery.profile.sh (celery 项目环境配置)\n    │   ├── celery.run.sh (celery 通用命令运行脚本)\n    │   ├── celery.sh (beat/worker 共用管理脚本)\n    │   └── celery.worker.sh (celery worker 管理脚本)\n    ├── config (配置文件存放目录)\n    │   ├── database.yaml\n    │   ├── *.yaml\n    │   └── testing (测试环境目录)\n    │   │   └── database.yaml\n    │   └── production\n    │       └── database.yaml\n    ├── docs (项目文档目录）\n    ├── logs (日志目录，按日期存放）\n    ├── .python-version (pyenv 环境识别文件)\n    ├── requirements_dev.txt (开发环境包依赖文件)\n    └── requirements.txt (生产环境包依赖文件)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhouyl%2Fcelery-task-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhouyl%2Fcelery-task-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhouyl%2Fcelery-task-server/lists"}