Pick caching backend via env vars
This commit is contained in:
		
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							@@ -296,13 +296,15 @@ output = morss.FeedFormat(rss, options, 'unicode') # formats final feed
 | 
			
		||||
 | 
			
		||||
## Cache information
 | 
			
		||||
 | 
			
		||||
morss uses caching to make loading faster. There are 3 possible cache backends
 | 
			
		||||
(visible in `morss/crawler.py`):
 | 
			
		||||
morss uses caching to make loading faster. There are 3 possible cache backends,
 | 
			
		||||
which can be picked via environment variables:
 | 
			
		||||
 | 
			
		||||
- `{}`: a simple python in-memory dict() object
 | 
			
		||||
- `SQLiteCache`: sqlite3 cache. Default file location is in-memory (i.e. it will
 | 
			
		||||
be cleared every time the program is run
 | 
			
		||||
- `MySQLCacheHandler`
 | 
			
		||||
- `(nothing/default)`: a simple python in-memory dict() object.
 | 
			
		||||
- `CACHE=sqlite`: sqlite3 cache. Default file location is in-memory (i.e. it
 | 
			
		||||
will be cleared every time the program is run). Path can be defined with
 | 
			
		||||
`SQLITE_PATH`.
 | 
			
		||||
- `CACHE=mysql`: MySQL cache. Connection can be defined with the following
 | 
			
		||||
environment variables: `MYSQL_USER`, `MYSQL_PWD`, `MYSQL_DB`, `MYSQL_HOST`
 | 
			
		||||
 | 
			
		||||
## Configuration
 | 
			
		||||
### Length limitation
 | 
			
		||||
 
 | 
			
		||||
@@ -101,8 +101,6 @@ def cgi_app(environ, start_response):
 | 
			
		||||
 | 
			
		||||
    headers['content-type'] += '; charset=utf-8'
 | 
			
		||||
 | 
			
		||||
    crawler.default_cache = crawler.SQLiteCache(os.path.join(os.getcwd(), 'morss-cache.db'))
 | 
			
		||||
 | 
			
		||||
    # get the work done
 | 
			
		||||
    url, rss = FeedFetch(url, options)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@ import sys
 | 
			
		||||
import os.path
 | 
			
		||||
import argparse
 | 
			
		||||
 | 
			
		||||
from . import crawler
 | 
			
		||||
from .morss import FeedFetch, FeedGather, FeedFormat
 | 
			
		||||
from .morss import Options
 | 
			
		||||
 | 
			
		||||
@@ -44,8 +43,6 @@ def cli_app():
 | 
			
		||||
    options = Options(vars(parser.parse_args()))
 | 
			
		||||
    url = options.url
 | 
			
		||||
 | 
			
		||||
    crawler.default_cache = crawler.SQLiteCache(os.path.expanduser('~/.cache/morss-cache.db'))
 | 
			
		||||
 | 
			
		||||
    url, rss = FeedFetch(url, options)
 | 
			
		||||
    rss = FeedGather(rss, url, options)
 | 
			
		||||
    out = FeedFormat(rss, options, 'unicode')
 | 
			
		||||
 
 | 
			
		||||
@@ -388,9 +388,6 @@ class HTTPRefreshHandler(BaseHandler):
 | 
			
		||||
    https_response = http_response
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
default_cache = {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CacheHandler(BaseHandler):
 | 
			
		||||
    " Cache based on etags/last-modified "
 | 
			
		||||
 | 
			
		||||
@@ -659,6 +656,22 @@ class MySQLCacheHandler(BaseCache):
 | 
			
		||||
                (url,) + value + value)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if 'CACHE' in os.environ:
 | 
			
		||||
    if os.environ['CACHE'] == 'mysql':
 | 
			
		||||
        default_cache = MySQLCacheHandler(
 | 
			
		||||
            user = os.getenv('MYSQL_USER'),
 | 
			
		||||
            password = os.getenv('MYSQL_PWD'),
 | 
			
		||||
            database = os.getenv('MYSQL_DB'),
 | 
			
		||||
            host = os.getenv('MYSQL_HOST')
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    elif os.environ['CACHE'] == 'sqlite':
 | 
			
		||||
        default_cache = SQLiteCache(os.getenv('SQLITE_PATH', ':memory:'))
 | 
			
		||||
 | 
			
		||||
else:
 | 
			
		||||
        default_cache = {}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    req = adv_get(sys.argv[1] if len(sys.argv) > 1 else 'https://morss.it')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user