Python Can';t pickle\u thread.RLock对象使用redis队列
我正在尝试流式传输推文,并将它们插入带有Redis队列的MySQL中,以处理程序处理速度不够快的情况Python Can';t pickle\u thread.RLock对象使用redis队列,python,redis,Python,Redis,我正在尝试流式传输推文,并将它们插入带有Redis队列的MySQL中,以处理程序处理速度不够快的情况 我在使用排队时遇到了这个错误。我想原因是我只能放一个函数而不是table.function。但我不知道如何重写它。您试图将开放连接传递到单独的进程,这是不可能的。那么我可以做些什么来实现相同的结果呢?理论上,您可以制作一些简单的API,以某种方式接受字典(如POST请求或通过套接字发送或其他方式)并使用单个连接将其放入数据库。其次,创建一个函数,将字典提供给API,并将该函数传递给redis队列
我在使用排队时遇到了这个错误。我想原因是我只能放一个函数而不是table.function。但我不知道如何重写它。您试图将开放连接传递到单独的进程,这是不可能的。那么我可以做些什么来实现相同的结果呢?理论上,您可以制作一些简单的API,以某种方式接受字典(如POST请求或通过套接字发送或其他方式)并使用单个连接将其放入数据库。其次,创建一个函数,将字典提供给API,并将该函数传递给redis队列。您试图将打开的连接传递给单独的进程,这是不可能的。我可以做些什么来实现相同的结果?理论上,您可以制作一些简单的API,以某种方式接受字典第二,创建一个函数,将字典提供给API,并将该函数传递给redis队列。
import tweepy
import dataset
from textblob import TextBlob
from sqlalchemy.exc import ProgrammingError
import pymysql
pymysql.install_as_MySQLdb()
from redis import Redis
from rq import Queue
q = Queue(connection = Redis())
class StreamListener(tweepy.StreamListener):
def on_status(self, status):
if status.retweeted:
return
text = status.text
blob = TextBlob(text)
sent = blob.sentiment
dictToInsert = dict(
text = text,
created = status.created_at,
id_str = status.id_str,
retweet_count = status.retweet_count,
polarity = sent.polarity,
subjectivity = sent.subjectivity,
)
table = db["KeyWordTest"]
try:
**result = q.enqueue(table.insert, dictToInsert)**
except ProgrammingError as err:
print(err)