Running Multiple Instances of PRAW

PRAW, as of version 4, performs rate limiting dynamically based on the HTTP response headers from Reddit. As a result you can safely run a handful of PRAW instances without any additional configuration.

Note

Running more than a dozen or so instances of PRAW concurrently may occasionally result in exceeding Reddit’s rate limits as each instance can only guess how many other instances are running.

If you are authorized on other users’ behalf, each authorization should have its own rate limit, even when running from a single IP address.

Multiple Programs

The recommended way to run multiple instances of PRAW is to simply write separate independent Python programs. With this approach one program can monitor a comment stream and reply as needed, and another program can monitor a submission stream, for example.

If these programs need to share data consider using a third-party system such as a database or queuing system.

Multiple Threads

Warning

PRAW is not thread safe.

In a nutshell, instances of Reddit are not thread-safe for a number of reasons in its own code and each instance depends on an instance of requests.Session, which is not thread-safe [ref].

In theory, having a unique Reddit instance for each thread, and making sure that the instances are used in their respective threads only, will work. multiprocessing.Process has been confirmed to work with PRAW, so that is a viable choice as well. However, there are various errors with multiprocessing.pool.Pool, thus it is not supported by PRAW. Please use multiprocessing.pool.ThreadPool as an alternative to a process pool.

Please see this discussion and this GitHub issue for more information.