celery使用的一些小坑和技巧

2021-08-22 16:36:23 字數 1681 閱讀 9285

純粹是記錄一下自己在剛開始使用的時候遇到的一些坑,以及自己是怎樣通過配合redis來解決問題的。

文章分為三個部分,一是怎樣跑起來,並且怎樣監控相關的佇列和任務;二是遇到的幾個坑;三是給一些自己配合redis使用的**示例。

一.celery使用:

celery_autowork_task.py【任務執行方法的定義的地方】

from celery import celery

autowork = celery('auto_work', broker = 【celery_broker】, backend = '')

autowork.conf.celery_timezone = 'asia/shanghai' # 時區

autowork.conf.celeryd_concurrency = 4 # 任務併發數

autowork.conf.celeryd_task_soft_time_limit = 300 # 任務超時時間

autowork.conf.celery_disable_rate_limits = true # 任務頻率限制開關

autowork.conf.celery_routes = ,

}@autowork.task(bind=true,name="autowork_check_barcode_recharge",max_retries=15)

def autowork_check_barcode_recharge(self,recharge_id):

time_begin=datetime.datetime.now()

try:

pass

except exception as exc:

retries=self.request.retries

if retriestest.py【呼叫任務以及檢查任務的執**況】

def cancel_pre_celery_task_and_excute_next_task(self,recharge_record):

recharge_work_guid="recharge_work_guid:%d:%s"%(recharge_record.shop_id,recharge_record.num)

from handlers.celery_autowork_task import autowork_check_barcode_recharge

if redis.get(recharge_work_guid): #上次是否有執行這個實際業務中的任務

from celery_autowork_task import autowork

autowork.control.revoke(redis.get(recharge_work_guid).decode('utf-8'),terminate=true) #如果有執行,則中斷

autowork_guid=autowork_check_barcode_recharge.delay(recharge_record.id) #得到本次的任務guid

redis.set(recharge_work_guid,str(autowork_guid)) #儲存到redis裡面去

redis.expire(recharge_work_guid,3600)

自己使用Outlook 2003 的一些小技巧

1.最小化時隱藏到托盤區。我暈。我記得當初是搜尋才找到結果的,其實就直接在右下角圖示上右擊,選最小化時隱藏就可以了。2.每次傳送郵件後自動抄送到某個位址 一般會自動抄送乙份給自己確認是否傳送成功了。在規則裡面新增乙個就ok。3.現在想不起了 outlook的確是乙個相當有效的軟體 除了有時候稍微有點...

python中的一些小坑

a 1 b 1 這兩個看起來好像也沒什麼差別嘛,就是乙個都好而已 列印出來的結果卻差很多!print type a print a print type b print b 1 1,a 1 2,3 b a a 4,5,6 a a 4,5,6 print a,b 使用 列印結果 1,2,3,4,5,6...

給陣列賦值的一些小坑

陣列定義同時初始化是個常見的問題,比如,int a 3 其中a 0 a 1 a 2 這三個值都為0。如果這樣定義,同時賦值 int a 3 是不是意味著a 0 1,a 1 1,a 2 1呢?這是乙個很容易出錯的問題,答案肯定不是這樣,筆者在多個編譯器上試過,結果只有a 0 1,而a 1 0,a 2 ...