本文主要是介绍基于rq库的异步实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GitHub
生产者
# main.py
from datetime import timedelta
import time
from rq import Queue
from redis import Redisfrom demo import count_words_at_url
import rq# 连接到 Redis
redis_conn = Redis(host="192.168.3.199", port=6379, db=3, password="", charset="utf-8")
# 创建一个队列
queue = Queue(connection=redis_conn)for i in range(10):# 将任务添加到队列中job = queue.enqueue(count_words_at_url, "https://www.baidu.com/")print(job.get_id())# 获取任务状态print(job.get_status())# 获取任务结果print(job.result)
构造任务函数:
# demo.py
import datetime
import time
from rq import Queue
from redis import Redis
import requestsdef count_words_at_url(url):"""Just an example function that's called async."""time.sleep(5)with open("/home/carry/workplace/vaf/test.txt", "a+") as f:f.write(url + "\n")return url + f" {datetime.datetime.now()}"
消费者
#进入项目路径,启动worker
cd ..
rq worker --url redis://localhost:6379/3
可以启动多个消费者,用来加速消费任务
这篇关于基于rq库的异步实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!