安装环境
安装Python包
# 包pip3 install celerypip3 redispip3 playwright# 下载chromium浏览器(可选)playwright install
安装redis
代码
在程序根目录建立test.py文件
import asyncioimport timefrom celery import Celeryfrom celery.result import AsyncResultfrom playwright.async_api import async_playwrightapp = Celery("mytasks", backend="redis://localhost", broker="redis://localhost:6379/0")# async语法的异步爬虫耗时任务async def async_func():playwright = await async_playwright().start()browser = await playwright.chromium.launch(headless=False)page = await browser.new_page()await page.goto("http://zhihu.com")title = await page.title()await asyncio.sleep(10)await browser.close()return title@app.task(name="mytasks")def io_func():# 核心代码asyncio.runreturn asyncio.run(async_func())def main():result = io_func.delay()return result.id# 循环访问获取异步任务结果def get_result(task_id):res = AsyncResult(task_id)while True:print(res.status)if res.ready():breaktime.sleep(1)return res.resultif __name__ == "__main__":task_id = main()print(task_id)res = get_result(task_id)print(res)
启动celery
打开终端,进入程序根目录,执行以下代码启动celery
celery -A test worker -B --loglevel=info
开始测试
打开终端,进入程序根目录,执行
python3 test.py
