摘要:文件目錄如下啟動命令命令生成任務(wù)命令日志設(shè)置為空為空為空為空為空
文件目錄如下:
celery flower啟動命令:
celery -A tasks flower --loglevel=info
celery 命令:
celery -A tasks worker --loglevel=info
生成任務(wù)命令:
python generate_task.py
tasks.py
#!/usr/bin/env python # encoding: utf-8 import logging import time import json from celery import Celery app = Celery("reyun") app.config_from_object("config") # 日志設(shè)置 datefmt = "%Y-%m-%d %H:%M:%S" log_format = "%(asctime)s - %(message)s" logging.basicConfig(level=logging.INFO, format=log_format, datefmt=datefmt) # @app.task(utc=True, expires=10) @app.task(utc=True, name="tasks.crawl", rate_limit="12/m") def crawl(request_data): try: request_data = json.loads(request_data) except Exception as e: logging.error(e, exc_info=True) if not request_data: return url = request_data.get("url", None) if not url: logging.info("url為空",exc_info=True) return headers = request_data.get("headers", None) if not headers: logging.info("headers為空",exc_info=True) return method = request_data.get("method", None) if not method: logging.info("method為空",exc_info=True) return params = request_data.get("params", None) if not params: logging.info("params為空",exc_info=True) return cat = request_data.get("cat", None) if not cat: logging.info("cat為空",exc_info=True) return data = request_data.get("data", None) cookies = request_data.get("cookies", None) json_data = request_data.get("json_data", None) timeout = request_data.get("timeout", None) if json_data: result = post_json(url, headers, json_data, cookies=cookies, timeout=timeout) else: result = send(url, headers, params=params, data=data, method=method, timeout=timeout, cookies=cookies) return time.time() # spider = self.cat_spider_dict.get(cat) # if spider: # spider.process_res(result=result, request_data=request_data) # else: # logging.error("spider is None cat is %s " % cat)
config.py
#!/usr/bin/env python # encoding: utf-8 from kombu import Exchange, Queue CELERY_RESULT_BACKEND = "redis://127.0.0.1:6379/4" BROKER_URL = "redis://127.0.0.1:6379/5" CELERY_TIMEZONE = "Asia/Shanghai" CELERY_QUEUES = ( Queue("craw_queue", Exchange("craw_queue"), routing_key="crawl"), ) CELERY_ROUTES = { "tasks.crawl": {"queue": "craw_queue", "routing_key": "craw_queue"} }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42752.html
摘要:我們將窗口切換到的啟動窗口,會看到多了兩條日志這說明任務(wù)已經(jīng)被調(diào)度并執(zhí)行成功。本文標(biāo)題為異步任務(wù)神器簡明筆記本文鏈接為參考資料使用之美分布式任務(wù)隊(duì)列的介紹思誠之道異步任務(wù)神器簡明筆記 Celery 在程序的運(yùn)行過程中,我們經(jīng)常會碰到一些耗時耗資源的操作,為了避免它們阻塞主程序的運(yùn)行,我們經(jīng)常會采用多線程或異步任務(wù)。比如,在 Web 開發(fā)中,對新用戶的注冊,我們通常會給他發(fā)一封激活郵件,...
摘要:所以這就現(xiàn)實(shí)了在中使用的應(yīng)用上下文。要引入請求上下文,需要考慮這兩個問題如何在中產(chǎn)生請求上下文。中有和可以產(chǎn)生請求上下文。具體的思路還是在中重載類,通過,在的上下文環(huán)境下執(zhí)行。將他們傳入,生成偽造的請求上下文可以覆蓋大多數(shù)的使用情況。 其實(shí)我只是想把郵件發(fā)送這個動作移到Celery中執(zhí)行。既然用到了Celery,那么每次發(fā)郵件都單獨(dú)開一個線程似乎有點(diǎn)多余,異步任務(wù)還是交給Celery吧...
摘要:今天介紹一下如何在項(xiàng)目中使用搭建一個有兩個節(jié)點(diǎn)的任務(wù)隊(duì)列一個主節(jié)點(diǎn)一個子節(jié)點(diǎn)主節(jié)點(diǎn)發(fā)布任務(wù),子節(jié)點(diǎn)收到任務(wù)并執(zhí)行。 今天介紹一下如何在django項(xiàng)目中使用celery搭建一個有兩個節(jié)點(diǎn)的任務(wù)隊(duì)列(一個主節(jié)點(diǎn)一個子節(jié)點(diǎn);主節(jié)點(diǎn)發(fā)布任務(wù),子節(jié)點(diǎn)收到任務(wù)并執(zhí)行。搭建3個或者以上的節(jié)點(diǎn)就類似了),使用到了celery,rabbitmq。這里不會單獨(dú)介紹celery和rabbitmq中的知識了...
摘要:文檔中文文檔官方文檔定時服務(wù)與結(jié)合使用簡介是一個自帶電池的的任務(wù)隊(duì)列。追蹤任務(wù)在不同狀態(tài)間的遷移,并檢視返回值。 文檔 中文文檔 官方文檔 celery定時服務(wù)、celery與django結(jié)合使用 簡介 Celery 是一個自帶電池的的任務(wù)隊(duì)列。它易于使用,所以你可以無視其所解決問題的復(fù)雜程度而輕松入門。它遵照最佳實(shí)踐設(shè)計(jì),所以你的產(chǎn)品可以擴(kuò)展,或與其他語言集成,并且它自帶了在生產(chǎn)...
閱讀 814·2021-11-25 09:43
閱讀 1682·2021-09-29 09:42
閱讀 1898·2019-08-30 15:55
閱讀 3418·2019-08-30 15:54
閱讀 2623·2019-08-30 13:20
閱讀 3507·2019-08-29 13:25
閱讀 917·2019-08-28 18:03
閱讀 1783·2019-08-26 13:44