在进程之间共享模块

时间:2018-04-30 08:30:01

标签: python python-multiprocessing tweepy

我有一个程序,它启动了一个tweepy streamListener,它将新推文添加到数据库并启动另一个进程,该进程监视所述数据库以查找早于X的推文,并对它们做了一些事情。

下面的代码结构相似,只是没有数据库交互代码,因为它不是导致我问题的原因。

根据我的理解,问题是你不能共享在不同进程之间拥有某种状态的python模块。

我该如何解决这个问题?我需要两个进程才能访问tweepy以进行Twitter交互。

非常感谢任何帮助或想法!

sql = "SELECT * FROM prezzi LIMIT 15 ORDER BY posizione"

运行此操作会产生以下错误

import multiprocessing
import time
import tweepy

class App():
    def __init__(self):
        keys = {
            "consumer_key": "",
            "consumer_secret": "",
            "access_token": "",
            "access_token_secret": ""
        }

        auth = tweepy.OAuthHandler(keys['consumer_key'], keys['consumer_secret'])
        auth.set_access_token(keys['access_token'], keys['access_token_secret'])

        self.api = tweepy.API(auth)

        self.worker = Worker(self.api)

    def run(self):
        self.worker.start()

        myStreamListener = MyStreamListener()
        stream = tweepy.Stream(auth=self.api.auth, listener=myStreamListener)
        stream.filter(track=['python'], async=True)

class Worker(multiprocessing.Process):
    def __init__(self, api):
        multiprocessing.Process.__init__(self)

        self.api = api

    def run(self):
        # Filler for debugging purposes
        print(self.api.me(), flush=True)
        time.sleep(1)

class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        # Filler for debugging purposes
        print(status.text, flush=True)

if __name__ == "__main__":
    APP = App()
    APP.run()

0 个答案:

没有答案