{"id":16347079,"url":"https://github.com/ospoon/celeryapp","last_synced_at":"2025-11-09T02:30:26.688Z","repository":{"id":105556500,"uuid":"202971362","full_name":"OSpoon/celeryapp","owner":"OSpoon","description":"celery定时任务Demo","archived":false,"fork":false,"pushed_at":"2019-08-18T07:06:38.000Z","size":9,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-28T06:09:41.259Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OSpoon.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2019-08-18T07:06:03.000Z","updated_at":"2021-07-29T06:32:09.000Z","dependencies_parsed_at":"2024-03-30T18:48:41.271Z","dependency_job_id":null,"html_url":"https://github.com/OSpoon/celeryapp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fceleryapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fceleryapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fceleryapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OSpoon%2Fceleryapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OSpoon","download_url":"https://codeload.github.com/OSpoon/celeryapp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239565664,"owners_count":19660158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-11T00:39:36.671Z","updated_at":"2025-11-09T02:30:26.645Z","avatar_url":"https://github.com/OSpoon.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Celery+Redis+Flower+Supervisor\n\n#### 一·Redis for Mac\n\n##### Client [下载](http://www.pc6.com/mac/486661.html)\n##### 安装\n```\nbrew install redis\n```\n##### 启动\n```\nredis-server /usr/local/etc/redis.conf\n```\n##### 关闭\n```\nredis-cli shutdown\n```\n##### 检测服务器是否启动\n```\nredis-cli ping\n```\n#### 二·Celery\n\n##### 安装\n```\npip install celery[redis]\n```\n##### 简易Demo\n```\nimport time\nfrom celery import Celery\n\n\n# 消息中间件 Broker\nbroker = 'redis://localhost:6379/1'\n# 任务结果存储 Backend\nbackend = 'redis://localhost:6379/2'\nmyCelery = Celery('my_task', broker=broker, backend=backend)\n\n\n@myCelery.task\ndef add(x, y):\n    print('enter call func ...')\n    time.sleep(5)\n    return x, y\n```\n##### 运行 tasks Worker\n\n```\ncelery worker -A tasks -l INFO\n```\n##### 外部配置\n```\nBROKER_URL = 'redis://localhost:6379/1'\nCELERY_RESULT_BACKEND = 'redis://localhost:6379/2'\n\nCELERY_TIMEZONE = 'Asia/Shanghai'\n\nCELERY_IMPORTS = (\n    'celery_app.task1',\n    'celery_app.task2',\n)\n\n```\n##### 初始化Celery\n```\nfrom celery import Celery\n\napp = Celery('celery_app')\napp.config_from_object('celery_app.celeryconfig')\n```\n\n##### 运行 celery_app Worker\n\n```\ncelery worker -A celery_app -l INFO\n```\n##### 调用任务\n```\n# 你可以用 delay() 方法来调用任务。\nfrom tasks import add\nadd.delay(4, 4)\n\n# 查看是否完成\nresult.ready()\n\n# 获取结果\nresult.get(timeout=1)\n```\n##### Redis存储的结果信息\n```\neg：\n{\"status\": \"SUCCESS\", \"result\": 6, \"traceback\": null, \"children\": [], \"task_id\": \"423d645d-86d9-4c91-a0e8-82a1ab997147\", \"date_done\": \"2019-08-17T14:54:43.189881\"}\n```\n##### 配置定时任务\n\n```\nCELERYBEAT_SCHEDULE = {\n    'task1': {\n        'task': 'celery_app.task1.add',\n        'schedule': timedelta(seconds=10),\n        'args': (2, 8)\n    },\n    'task2': {\n        'task': 'celery_app.task2.multiply',\n        'schedule': crontab(hour=23, minute=15),\n        'args': (4, 5)\n    }\n}\n```\n##### 发送定时任务\n```\ncelery beat -A celery_app -l INFO\n# 或\ncelery worker -A celery_app -l INFO -B\n```\n\n#### 三·Flower 监控任务\n##### 安装\n```\npip install flower\n```\n##### 启动\n```\ncelery flower --broker=redis://localhost:6379/1 --address=127.0.0.1 --port=9999 --basic_auth=admin:123456\n```\n\n####  四·Supervisor 进程管理\n##### 安装\n```\n pip install supervisor\n```\n##### 增加配置\n```\nmkdir conf\necho_supervisord_conf \u003e conf/supervisord.conf\n\n[program:demo-celery-worker]\ncommand=celery worker -A celery_app -l INFO -B\ndirectory=/Users/zhangxin/PycharmProjects/flask_server\nenvironment=PATH=\"/Users/zhangxin/PycharmProjects/flask_server/venv/bin\"\nstdout_logfile=/Users/zhangxin/PycharmProjects/flask_server/celery_app/log/work.log\nstderr_logfile=/Users/zhangxin/PycharmProjects/flask_server/celery_app/log/err.log\nautostart=true\npriority=999\n```\n\n##### 启动进程 for mac\n```\nsupervisord -c conf/supervisord.conf\n\nps -ef|grep supervisor\n```\n\n##### 查看进程\n```\n#进入命令行模式\nsupervisorctl\n\n#更新进程组\nupdate\n\n# 进程状态\ndemo-celery-worker RUNNING pid 12711, uptime 0:02:26\n```\n\n##### WEB展示\n```\nhttp://127.0.0.1:9001/\n```\n\n#### 备注\n##### 查看端口被哪个程序占用\n```\nsudo lsof -i tcp:port\n如：sudo lsof -i tcp:9001\n```\n##### 看到进程的PID，可以将进程杀死\n```\nsudo kill -9 PID\n如：sudo kill -9 750\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fospoon%2Fceleryapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fospoon%2Fceleryapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fospoon%2Fceleryapp/lists"}