xxx.delay()
,celery 会把这个任务写到任务队列然后返回,原程序不会被阻塞可以往下跑。注意这里需要用 delay 模式去跑这个函数,同时注意不要把 xxx.delay()
的结果赋值给一个变量,否则依然会被阻塞。tasks.py
。@app.task
。
@app.task def add(x, y): return x + ycelery_worker.py
:
#! /usr/bin/env python # coding: utf-8 import requests import json import time from config import HOST_IP, NOTIFY_URL, MOBILE_NUMBER def notify_dingding(msg): headers = {"Content-Type": "application/json; charset=utf-8"} post_data = { "msgtype": "text", "text": { "content": msg }, "at": { "atMobiles": MOBILE_NUMBER } } r = requests.post(NOTIFY_URL, headers=headers, data=json.dumps(post_data)) print(r.content)
注意这里从 config 里导入了一些参数,所以要在这个程序的同一层写一个 config.py
的配置文件。config.py NOTIFY_URL = ("https://oapi.dingtalk.com/robot/send?access_token=" "c6d5a2936381dfc29394f3c336bea5fad962d90ffd31809e92d95a1xxxxxxxx") MOBILE_NUMBER = "176xxxxx619" HOST_IP = "127.0.0.1"-B
是 celery 的 beat 服务,可以理解为一个周期任务。
celery -A celery_worker worker -B