Skip to content

Commit c0cacbd

Browse files
committed
Concurrency is a can of extremely terrifying worms
1 parent 74d192b commit c0cacbd

1 file changed

Lines changed: 14 additions & 17 deletions

File tree

plugins/geoip.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def fetch_db():
2727
shutil.copyfileobj(infile, outfile)
2828

2929

30-
def update_db(existing_reader):
30+
def update_db():
3131
"""
3232
Updates the DB.
3333
"""
@@ -38,15 +38,12 @@ def update_db(existing_reader):
3838
fetch_db()
3939
return geoip2.database.Reader(PATH)
4040
else:
41-
# geoip is good, create a reader or return existing reader
42-
if not existing_reader:
43-
try:
44-
return geoip2.database.Reader(PATH)
45-
except:
46-
fetch_db()
47-
return geoip2.database.Reader(PATH)
48-
else:
49-
return existing_reader
41+
try:
42+
return geoip2.database.Reader(PATH)
43+
except:
44+
# issue loading, geo
45+
fetch_db()
46+
return geoip2.database.Reader(PATH)
5047
else:
5148
# no geoip file
5249
fetch_db()
@@ -58,9 +55,12 @@ def check_db(loop):
5855
runs update_db in an executor thread and sets geoip_reader to the result
5956
"""
6057
global geoip_reader
61-
db = yield from loop.run_in_executor(None, update_db, geoip_reader)
62-
if db:
63-
geoip_reader = db
58+
if not geoip_reader:
59+
logger.info("Loading GeoIP database")
60+
db = yield from loop.run_in_executor(None, update_db, geoip_reader)
61+
logger.info("Loaded GeoIP database")
62+
if db:
63+
geoip_reader = db
6464

6565

6666
@asyncio.coroutine
@@ -75,7 +75,7 @@ def geoip(text, reply, loop):
7575
global geoip_reader
7676

7777
if not geoip_reader:
78-
return "GeoIP database is updating, please wait a minute"
78+
return "GeoIP database is still loading, please wait a minute"
7979

8080
try:
8181
ip = yield from loop.run_in_executor(None, socket.gethostbyname, text)
@@ -95,6 +95,3 @@ def geoip(text, reply, loop):
9595
}
9696

9797
reply("\x02Country:\x02 {country} ({cc}), \x02City:\x02 {city}{region}".format(**data))
98-
99-
# check the DB
100-
asyncio.async(check_db(loop), loop=loop)

0 commit comments

Comments
 (0)