Roll up all changes from #962 as the base has been massively changed by code cleanups. Rename our logging to a universal pyfalog to avoid shadowing either Logging or Logbook loggers
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
import copy
|
||||
import itertools
|
||||
import json
|
||||
import logging
|
||||
from logbook import Logger
|
||||
import threading
|
||||
from codecs import open
|
||||
from xml.etree import ElementTree
|
||||
@@ -39,7 +39,7 @@ from eos.saveddata.character import Character as es_Character
|
||||
from eos.saveddata.module import Slot as es_Slot, Module as es_Module
|
||||
from eos.saveddata.fighter import Fighter as es_Fighter
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
class CharacterImportThread(threading.Thread):
|
||||
@@ -72,7 +72,7 @@ class CharacterImportThread(threading.Thread):
|
||||
charFile = open(path, mode='r').read()
|
||||
doc = minidom.parseString(charFile)
|
||||
if doc.documentElement.tagName not in ("SerializableCCPCharacter", "SerializableUriCharacter"):
|
||||
logger.error("Incorrect EVEMon XML sheet")
|
||||
pyfalog.error("Incorrect EVEMon XML sheet")
|
||||
raise RuntimeError("Incorrect EVEMon XML sheet")
|
||||
name = doc.getElementsByTagName("name")[0].firstChild.nodeValue
|
||||
skill_els = doc.getElementsByTagName("skill")
|
||||
@@ -84,7 +84,7 @@ class CharacterImportThread(threading.Thread):
|
||||
"level": int(skill.getAttribute("level")),
|
||||
})
|
||||
else:
|
||||
logger.error("Attempted to import unknown skill %s (ID: %s) (Level: %s)",
|
||||
pyfalog.error("Attempted to import unknown skill %s (ID: %s) (Level: %s)",
|
||||
skill.getAttribute("name"),
|
||||
skill.getAttribute("typeID"),
|
||||
skill.getAttribute("level"),
|
||||
@@ -92,8 +92,8 @@ class CharacterImportThread(threading.Thread):
|
||||
char = sCharacter.new(name + " (EVEMon)")
|
||||
sCharacter.apiUpdateCharSheet(char.ID, skills)
|
||||
except Exception, e:
|
||||
logger.error("Exception on character import:")
|
||||
logger.error(e)
|
||||
pyfalog.error("Exception on character import:")
|
||||
pyfalog.error(e)
|
||||
continue
|
||||
|
||||
wx.CallAfter(self.callback)
|
||||
@@ -304,7 +304,7 @@ class Character(object):
|
||||
@staticmethod
|
||||
def rename(char, newName):
|
||||
if char.name in ("All 0", "All 5"):
|
||||
logger.info("Cannot rename built in characters.")
|
||||
pyfalog.info("Cannot rename built in characters.")
|
||||
else:
|
||||
char.name = newName
|
||||
eos.db.commit()
|
||||
@@ -404,7 +404,7 @@ class Character(object):
|
||||
def addImplant(charID, itemID):
|
||||
char = eos.db.getCharacter(charID)
|
||||
if char.ro:
|
||||
logger.error("Trying to add implant to read-only character")
|
||||
pyfalog.error("Trying to add implant to read-only character")
|
||||
return
|
||||
|
||||
implant = es_Implant(eos.db.getItem(itemID))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
import thread
|
||||
import logging
|
||||
from logbook import Logger
|
||||
import threading
|
||||
import copy
|
||||
import uuid
|
||||
@@ -15,7 +15,7 @@ from service.settings import CRESTSettings
|
||||
from service.server import StoppableHTTPServer, AuthHandler
|
||||
from service.pycrest.eve import EVE
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
class Servers(Enum):
|
||||
@@ -153,17 +153,17 @@ class Crest(object):
|
||||
|
||||
def logout(self):
|
||||
"""Logout of implicit character"""
|
||||
logging.debug("Character logout")
|
||||
pyfalog.debug("Character logout")
|
||||
self.implicitCharacter = None
|
||||
wx.PostEvent(self.mainFrame, GE.SsoLogout(type=self.settings.get('mode')))
|
||||
|
||||
def stopServer(self):
|
||||
logging.debug("Stopping Server")
|
||||
pyfalog.debug("Stopping Server")
|
||||
self.httpd.stop()
|
||||
self.httpd = None
|
||||
|
||||
def startServer(self):
|
||||
logging.debug("Starting server")
|
||||
pyfalog.debug("Starting server")
|
||||
if self.httpd:
|
||||
self.stopServer()
|
||||
time.sleep(1)
|
||||
@@ -179,10 +179,10 @@ class Crest(object):
|
||||
return
|
||||
|
||||
if message['state'][0] != self.state:
|
||||
logger.warn("OAUTH state mismatch")
|
||||
pyfalog.warn("OAUTH state mismatch")
|
||||
return
|
||||
|
||||
logger.debug("Handling CREST login with: %s" % message)
|
||||
pyfalog.debug("Handling CREST login with: %s" % message)
|
||||
|
||||
if 'access_token' in message: # implicit
|
||||
eve = copy.deepcopy(self.eve)
|
||||
@@ -196,7 +196,7 @@ class Crest(object):
|
||||
eve()
|
||||
info = eve.whoami()
|
||||
|
||||
logger.debug("Got character info: %s" % info)
|
||||
pyfalog.debug("Got character info: %s" % info)
|
||||
|
||||
self.implicitCharacter = CrestChar(info['CharacterID'], info['CharacterName'])
|
||||
self.implicitCharacter.eve = eve
|
||||
@@ -209,7 +209,7 @@ class Crest(object):
|
||||
eve()
|
||||
info = eve.whoami()
|
||||
|
||||
logger.debug("Got character info: %s" % info)
|
||||
pyfalog.debug("Got character info: %s" % info)
|
||||
|
||||
# check if we have character already. If so, simply replace refresh_token
|
||||
char = self.getCrestCharacter(int(info['CharacterID']))
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
# ===============================================================================
|
||||
|
||||
import copy
|
||||
import logging
|
||||
from logbook import Logger
|
||||
|
||||
import eos.db
|
||||
from eos.saveddata.booster import Booster as es_Booster
|
||||
@@ -36,7 +36,7 @@ from service.character import Character
|
||||
from service.damagePattern import DamagePattern
|
||||
from service.settings import SettingsProvider
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
class Fit(object):
|
||||
@@ -50,6 +50,7 @@ class Fit(object):
|
||||
return cls.instance
|
||||
|
||||
def __init__(self):
|
||||
pyfalog.debug("Initialize Fit class")
|
||||
self.pattern = DamagePattern.getInstance().getDamagePattern("Uniform")
|
||||
self.targetResists = None
|
||||
self.character = saveddata_Character.getAll5()
|
||||
@@ -1010,7 +1011,7 @@ class Fit(object):
|
||||
self.recalc(fit)
|
||||
|
||||
def recalc(self, fit, withBoosters=True):
|
||||
logger.debug("=" * 10 + "recalc" + "=" * 10)
|
||||
pyfalog.debug("=" * 10 + "recalc" + "=" * 10)
|
||||
if fit.factorReload is not self.serviceFittingOptions["useGlobalForceReload"]:
|
||||
fit.factorReload = self.serviceFittingOptions["useGlobalForceReload"]
|
||||
fit.clear()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
import re
|
||||
import threading
|
||||
import logging
|
||||
from logbook import Logger
|
||||
import Queue
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
@@ -41,7 +41,7 @@ try:
|
||||
except ImportError:
|
||||
from utils.compat import OrderedDict
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
# Event which tells threads dependent on Market that it's initialized
|
||||
mktRdy = threading.Event()
|
||||
@@ -74,12 +74,12 @@ class ShipBrowserWorkerThread(threading.Thread):
|
||||
|
||||
wx.CallAfter(callback, (id_, set_))
|
||||
except:
|
||||
pass
|
||||
pyfalog.debug("Callback failed.")
|
||||
finally:
|
||||
try:
|
||||
queue.task_done()
|
||||
except:
|
||||
pass
|
||||
pyfalog.debug("Queue task done failed.")
|
||||
|
||||
|
||||
class PriceWorkerThread(threading.Thread):
|
||||
@@ -88,9 +88,11 @@ class PriceWorkerThread(threading.Thread):
|
||||
self.name = "PriceWorker"
|
||||
|
||||
def run(self):
|
||||
pyfalog.debug("Run start")
|
||||
self.queue = Queue.Queue()
|
||||
self.wait = {}
|
||||
self.processUpdates()
|
||||
pyfalog.debug("Run end")
|
||||
|
||||
def processUpdates(self):
|
||||
queue = self.queue
|
||||
@@ -440,7 +442,7 @@ class Market(object):
|
||||
else:
|
||||
raise TypeError("Need Item object, integer, float or string as argument")
|
||||
except:
|
||||
logger.error("Could not get item: %s", identity)
|
||||
pyfalog.error("Could not get item: %s", identity)
|
||||
raise
|
||||
|
||||
return item
|
||||
@@ -834,7 +836,7 @@ class Market(object):
|
||||
try:
|
||||
callback(requests)
|
||||
except Exception:
|
||||
pass
|
||||
pyfalog.debug("Callback failed.")
|
||||
eos.db.commit()
|
||||
|
||||
self.priceWorkerThread.trigger(requests, cb)
|
||||
@@ -850,7 +852,7 @@ class Market(object):
|
||||
try:
|
||||
callback(item)
|
||||
except:
|
||||
pass
|
||||
pyfalog.debug("Callback failed.")
|
||||
|
||||
self.priceWorkerThread.setToWait(item.ID, cb)
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
import re
|
||||
import os
|
||||
import xml.dom
|
||||
import logging
|
||||
from logbook import Logger
|
||||
import collections
|
||||
import json
|
||||
import threading
|
||||
@@ -50,7 +50,7 @@ from service.market import Market
|
||||
if 'wxMac' not in wx.PlatformInfo or ('wxMac' in wx.PlatformInfo and wx.VERSION >= (3, 0)):
|
||||
from service.crest import Crest
|
||||
|
||||
logger = logging.getLogger("pyfa.service.port")
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
try:
|
||||
from collections import OrderedDict
|
||||
@@ -134,21 +134,21 @@ class Port(object):
|
||||
savebom = bom
|
||||
|
||||
if codec_found is None:
|
||||
logger.info("Unicode BOM not found in file %s.", path)
|
||||
pyfalog.info("Unicode BOM not found in file %s.", path)
|
||||
attempt_codecs = (defcodepage, "utf-8", "utf-16", "cp1252")
|
||||
|
||||
for page in attempt_codecs:
|
||||
try:
|
||||
logger.info("Attempting to decode file %s using %s page.", path, page)
|
||||
pyfalog.info("Attempting to decode file %s using %s page.", path, page)
|
||||
srcString = unicode(srcString, page)
|
||||
codec_found = page
|
||||
logger.info("File %s decoded using %s page.", path, page)
|
||||
pyfalog.info("File %s decoded using %s page.", path, page)
|
||||
except UnicodeDecodeError:
|
||||
logger.info("Error unicode decoding %s from page %s, trying next codec", path, page)
|
||||
pyfalog.info("Error unicode decoding %s from page %s, trying next codec", path, page)
|
||||
else:
|
||||
break
|
||||
else:
|
||||
logger.info("Unicode BOM detected in %s, using %s page.", path, codec_found)
|
||||
pyfalog.info("Unicode BOM detected in %s, using %s page.", path, codec_found)
|
||||
srcString = unicode(srcString[len(savebom):], codec_found)
|
||||
|
||||
else:
|
||||
@@ -167,7 +167,7 @@ class Port(object):
|
||||
except xml.parsers.expat.ExpatError:
|
||||
return False, "Malformed XML in %s" % path
|
||||
except Exception:
|
||||
logger.exception("Unknown exception processing: %s", path)
|
||||
pyfalog.exception("Unknown exception processing: %s", path)
|
||||
return False, "Unknown Error while processing %s" % path
|
||||
|
||||
IDs = []
|
||||
@@ -340,6 +340,7 @@ class Port(object):
|
||||
except ValueError:
|
||||
f.ship = Citadel(sMkt.getItem(fit['ship']['id']))
|
||||
except:
|
||||
pyfalog.warning("Caught exception in importCrest")
|
||||
return None
|
||||
|
||||
items = fit['items']
|
||||
@@ -365,6 +366,7 @@ class Port(object):
|
||||
m = Module(item)
|
||||
# When item can't be added to any slot (unknown item or just charge), ignore it
|
||||
except ValueError:
|
||||
pyfalog.debug("Item can't be added to any slot (unknown item or just charge)")
|
||||
continue
|
||||
# Add subsystems before modules to make sure T3 cruisers have subsystems installed
|
||||
if item.category.name == "Subsystem":
|
||||
@@ -377,6 +379,7 @@ class Port(object):
|
||||
moduleList.append(m)
|
||||
|
||||
except:
|
||||
pyfalog.warning("Could not process module.")
|
||||
continue
|
||||
|
||||
# Recalc to get slot numbers correct for T3 cruisers
|
||||
@@ -405,6 +408,7 @@ class Port(object):
|
||||
string = string[string.index(str(id_)):]
|
||||
break
|
||||
except:
|
||||
pyfalog.warning("Exception caught in importDna")
|
||||
pass
|
||||
string = string[:string.index("::") + 2]
|
||||
info = string.split(":")
|
||||
@@ -422,7 +426,7 @@ class Port(object):
|
||||
return s_[:10] + "..."
|
||||
return s_
|
||||
|
||||
logger.exception("Couldn't import ship data %r", [logtransform(s) for s in info])
|
||||
pyfalog.exception("Couldn't import ship data {0}", [logtransform(s) for s in info])
|
||||
return None
|
||||
|
||||
moduleList = []
|
||||
@@ -449,6 +453,7 @@ class Port(object):
|
||||
try:
|
||||
m = Module(item)
|
||||
except:
|
||||
pyfalog.warning("Exception caught in importDna")
|
||||
continue
|
||||
# Add subsystems before modules to make sure T3 cruisers have subsystems installed
|
||||
if item.category.name == "Subsystem":
|
||||
@@ -497,6 +502,7 @@ class Port(object):
|
||||
fit.ship = Citadel(ship)
|
||||
fit.name = fitName
|
||||
except:
|
||||
pyfalog.warning("Exception caught in importEft")
|
||||
return
|
||||
|
||||
# maintain map of drones and their quantities
|
||||
@@ -537,6 +543,7 @@ class Port(object):
|
||||
item = sMkt.getItem(modName, eager="group.category")
|
||||
except:
|
||||
# if no data can be found (old names)
|
||||
pyfalog.warning("no data can be found (old names)")
|
||||
continue
|
||||
|
||||
if item.category.name == "Drone":
|
||||
@@ -563,7 +570,7 @@ class Port(object):
|
||||
elif "boosterness" in item.attributes:
|
||||
fit.boosters.append(Booster(item))
|
||||
else:
|
||||
logger.error("Failed to import implant: %s", line)
|
||||
pyfalog.error("Failed to import implant: {0}", line)
|
||||
# elif item.category.name == "Subsystem":
|
||||
# try:
|
||||
# subsystem = Module(item)
|
||||
@@ -689,6 +696,7 @@ class Port(object):
|
||||
try:
|
||||
droneItem = sMkt.getItem(droneName, eager="group.category")
|
||||
except:
|
||||
pyfalog.warning("Cannot get item.")
|
||||
continue
|
||||
if droneItem.category.name == "Drone":
|
||||
# Add drone to the fitting
|
||||
@@ -710,6 +718,7 @@ class Port(object):
|
||||
try:
|
||||
implantItem = sMkt.getItem(entityData, eager="group.category")
|
||||
except:
|
||||
pyfalog.warning("Cannot get item.")
|
||||
continue
|
||||
if implantItem.category.name != "Implant":
|
||||
continue
|
||||
@@ -725,6 +734,7 @@ class Port(object):
|
||||
try:
|
||||
boosterItem = sMkt.getItem(entityData, eager="group.category")
|
||||
except:
|
||||
pyfalog.warning("Cannot get item.")
|
||||
continue
|
||||
# All boosters have implant category
|
||||
if boosterItem.category.name != "Implant":
|
||||
@@ -745,6 +755,7 @@ class Port(object):
|
||||
try:
|
||||
item = sMkt.getItem(cargoName)
|
||||
except:
|
||||
pyfalog.warning("Cannot get item.")
|
||||
continue
|
||||
# Add Cargo to the fitting
|
||||
c = Cargo(item)
|
||||
@@ -758,6 +769,7 @@ class Port(object):
|
||||
try:
|
||||
modItem = sMkt.getItem(modName)
|
||||
except:
|
||||
pyfalog.warning("Cannot get item.")
|
||||
continue
|
||||
|
||||
# Create module
|
||||
@@ -779,6 +791,7 @@ class Port(object):
|
||||
if chargeItem.category.name == "Charge":
|
||||
m.charge = chargeItem
|
||||
except:
|
||||
pyfalog.warning("Cannot get item.")
|
||||
pass
|
||||
# Append module to fit
|
||||
moduleList.append(m)
|
||||
@@ -797,6 +810,7 @@ class Port(object):
|
||||
wx.CallAfter(callback, None)
|
||||
# Skip fit silently if we get an exception
|
||||
except Exception:
|
||||
pyfalog.error("Caught exception on fit.")
|
||||
pass
|
||||
|
||||
return fits
|
||||
@@ -821,6 +835,7 @@ class Port(object):
|
||||
except ValueError:
|
||||
f.ship = Citadel(sMkt.getItem(shipType))
|
||||
except:
|
||||
pyfalog.warning("Caught exception on importXml")
|
||||
continue
|
||||
hardwares = fitting.getElementsByTagName("hardware")
|
||||
moduleList = []
|
||||
@@ -830,6 +845,7 @@ class Port(object):
|
||||
try:
|
||||
item = sMkt.getItem(moduleName, eager="group.category")
|
||||
except:
|
||||
pyfalog.warning("Caught exception on importXml")
|
||||
continue
|
||||
if item:
|
||||
if item.category.name == "Drone":
|
||||
@@ -852,6 +868,7 @@ class Port(object):
|
||||
m = Module(item)
|
||||
# When item can't be added to any slot (unknown item or just charge), ignore it
|
||||
except ValueError:
|
||||
pyfalog.warning("item can't be added to any slot (unknown item or just charge), ignore it")
|
||||
continue
|
||||
# Add subsystems before modules to make sure T3 cruisers have subsystems installed
|
||||
if item.category.name == "Subsystem":
|
||||
@@ -865,6 +882,7 @@ class Port(object):
|
||||
moduleList.append(m)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pyfalog.warning("Keyboard Interrupt")
|
||||
continue
|
||||
|
||||
# Recalc to get slot numbers correct for T3 cruisers
|
||||
@@ -1171,7 +1189,7 @@ class FitImportThread(threading.Thread):
|
||||
success, result = sPort.importFitFromFiles(self.paths, self.callback)
|
||||
|
||||
if not success: # there was an error during processing
|
||||
logger.error("Error while processing file import: %s", result)
|
||||
pyfalog.error("Error while processing file import: {0}", result)
|
||||
wx.CallAfter(self.callback, -2, result)
|
||||
else: # Send done signal to GUI
|
||||
wx.CallAfter(self.callback, -1, result)
|
||||
|
||||
@@ -25,9 +25,9 @@ from eos.db import migration
|
||||
from eos.db.saveddata.loadDefaultDatabaseValues import DefaultDatabaseValues
|
||||
from eos.db.saveddata.databaseRepair import DatabaseCleanup
|
||||
|
||||
import logging
|
||||
from logbook import Logger
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
# Make sure the saveddata db exists
|
||||
if config.savePath and not os.path.exists(config.savePath):
|
||||
@@ -35,14 +35,16 @@ if config.savePath and not os.path.exists(config.savePath):
|
||||
|
||||
if config.saveDB and os.path.isfile(config.saveDB):
|
||||
# If database exists, run migration after init'd database
|
||||
pyfalog.debug("Run database migration.")
|
||||
db.saveddata_meta.create_all()
|
||||
migration.update(db.saveddata_engine)
|
||||
# Import default database values
|
||||
# Import values that must exist otherwise Pyfa breaks
|
||||
pyfalog.debug("Import Required Database Values.")
|
||||
DefaultDatabaseValues.importRequiredDefaults()
|
||||
|
||||
# Finds and fixes database corruption issues.
|
||||
logging.debug("Starting database validation.")
|
||||
pyfalog.debug("Starting database validation.")
|
||||
database_cleanup_instance = DatabaseCleanup()
|
||||
database_cleanup_instance.OrphanedCharacterSkills(db.saveddata_engine)
|
||||
database_cleanup_instance.OrphanedFitCharacterIDs(db.saveddata_engine)
|
||||
@@ -52,7 +54,7 @@ if config.saveDB and os.path.isfile(config.saveDB):
|
||||
database_cleanup_instance.OrphanedFitIDItemID(db.saveddata_engine)
|
||||
database_cleanup_instance.NullDamageTargetPatternValues(db.saveddata_engine)
|
||||
database_cleanup_instance.DuplicateSelectedAmmoName(db.saveddata_engine)
|
||||
logging.debug("Completed database validation.")
|
||||
pyfalog.debug("Completed database validation.")
|
||||
|
||||
else:
|
||||
# If database does not exist, do not worry about migration. Simply
|
||||
|
||||
@@ -23,6 +23,8 @@ from xml.dom import minidom
|
||||
|
||||
from eos import db
|
||||
from service.network import Network, TimeoutError
|
||||
from logbook import Logger
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
VALIDITY = 24 * 60 * 60 # Price validity period, 24 hours
|
||||
REREQUEST = 4 * 60 * 60 # Re-request delay for failed fetches, 4 hours
|
||||
@@ -114,6 +116,7 @@ class Price(object):
|
||||
# If getting or processing data returned any errors
|
||||
except TimeoutError:
|
||||
# Timeout error deserves special treatment
|
||||
pyfalog.warning("Price fetch timout")
|
||||
for typeID in priceMap.keys():
|
||||
priceobj = priceMap[typeID]
|
||||
priceobj.time = time.time() + TIMEOUT
|
||||
@@ -121,6 +124,7 @@ class Price(object):
|
||||
del priceMap[typeID]
|
||||
except:
|
||||
# all other errors will pass and continue onward to the REREQUEST delay
|
||||
pyfalog.warning("Caught exception in fetchPrices")
|
||||
pass
|
||||
|
||||
# if we get to this point, then we've got an error. Set to REREQUEST delay
|
||||
|
||||
@@ -1,12 +1 @@
|
||||
import logging
|
||||
|
||||
|
||||
class NullHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
pass
|
||||
|
||||
|
||||
logger = logging.getLogger('pycrest')
|
||||
logger.addHandler(NullHandler())
|
||||
|
||||
version = "0.0.1"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import base64
|
||||
import logging
|
||||
from logbook import Logger
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
@@ -20,7 +20,7 @@ except ImportError: # pragma: no cover
|
||||
# noinspection PyPep8Naming
|
||||
import cPickle as pickle
|
||||
|
||||
logger = logging.getLogger("pycrest.eve")
|
||||
pyfalog = Logger(__name__)
|
||||
cache_re = re.compile(r'max-age=([0-9]+)')
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@ class FileCache(APICache):
|
||||
with open(self._getpath(key), 'rb') as f:
|
||||
return pickle.loads(zlib.decompress(f.read()))
|
||||
except IOError as ex:
|
||||
pyfalog.debug("IO error opening zip file. (May not exist yet)")
|
||||
if ex.errno == 2: # file does not exist (yet)
|
||||
return None
|
||||
else:
|
||||
@@ -69,6 +70,8 @@ class FileCache(APICache):
|
||||
try:
|
||||
os.unlink(self._getpath(key))
|
||||
except OSError as ex:
|
||||
pyfalog.debug("Caught exception in invalidate")
|
||||
pyfalog.debug(ex)
|
||||
if ex.errno == 2: # does not exist
|
||||
pass
|
||||
else:
|
||||
@@ -116,7 +119,7 @@ class APIConnection(object):
|
||||
self.cache = DictCache()
|
||||
|
||||
def get(self, resource, params=None):
|
||||
logger.debug('Getting resource %s', resource)
|
||||
pyfalog.debug('Getting resource %s', resource)
|
||||
if params is None:
|
||||
params = {}
|
||||
|
||||
@@ -136,15 +139,15 @@ class APIConnection(object):
|
||||
key = (resource, frozenset(self._session.headers.items()), frozenset(prms.items()))
|
||||
cached = self.cache.get(key)
|
||||
if cached and cached['cached_until'] > time.time():
|
||||
logger.debug('Cache hit for resource %s (params=%s)', resource, prms)
|
||||
pyfalog.debug('Cache hit for resource %s (params=%s)', resource, prms)
|
||||
return cached
|
||||
elif cached:
|
||||
logger.debug('Cache stale for resource %s (params=%s)', resource, prms)
|
||||
pyfalog.debug('Cache stale for resource %s (params=%s)', resource, prms)
|
||||
self.cache.invalidate(key)
|
||||
else:
|
||||
logger.debug('Cache miss for resource %s (params=%s', resource, prms)
|
||||
pyfalog.debug('Cache miss for resource %s (params=%s', resource, prms)
|
||||
|
||||
logger.debug('Getting resource %s (params=%s)', resource, prms)
|
||||
pyfalog.debug('Getting resource %s (params=%s)', resource, prms)
|
||||
res = self._session.get(resource, params=prms)
|
||||
if res.status_code != 200:
|
||||
raise APIException("Got unexpected status code from server: %i" % res.status_code)
|
||||
|
||||
@@ -2,14 +2,13 @@ import BaseHTTPServer
|
||||
import urlparse
|
||||
import socket
|
||||
import thread
|
||||
import logging
|
||||
from logbook import Logger
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
import wx
|
||||
|
||||
from service.settings import CRESTSettings
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
# noinspection PyPep8
|
||||
HTML = '''
|
||||
@@ -85,7 +84,7 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
|
||||
|
||||
# Allow listening for x seconds
|
||||
sec = self.settings.get('timeout')
|
||||
logger.debug("Running server for %d seconds", sec)
|
||||
pyfalog.debug("Running server for {0} seconds", sec)
|
||||
|
||||
self.socket.settimeout(0.5)
|
||||
self.max_tries = sec / self.socket.gettimeout()
|
||||
@@ -99,16 +98,17 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
|
||||
sock.settimeout(None)
|
||||
return sock, addr
|
||||
except socket.timeout:
|
||||
pyfalog.warning("Server timed out waiting for connection")
|
||||
pass
|
||||
|
||||
def stop(self):
|
||||
self.run = False
|
||||
|
||||
def handle_timeout(self):
|
||||
# logger.debug("Number of tries: %d"%self.tries)
|
||||
# pyfalog.debug("Number of tries: %d"%self.tries)
|
||||
self.tries += 1
|
||||
if self.tries == self.max_tries:
|
||||
logger.debug("Server timed out waiting for connection")
|
||||
pyfalog.debug("Server timed out waiting for connection")
|
||||
self.stop()
|
||||
|
||||
def serve(self, callback):
|
||||
@@ -117,6 +117,7 @@ class StoppableHTTPServer(BaseHTTPServer.HTTPServer):
|
||||
try:
|
||||
self.handle_request()
|
||||
except TypeError:
|
||||
pyfalog.debug("Caught exception in serve")
|
||||
pass
|
||||
self.server_close()
|
||||
|
||||
|
||||
@@ -29,6 +29,9 @@ import dateutil.parser
|
||||
import config
|
||||
from service.network import Network
|
||||
from service.settings import UpdateSettings
|
||||
from logbook import Logger
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
|
||||
class CheckUpdateThread(threading.Thread):
|
||||
@@ -83,6 +86,7 @@ class CheckUpdateThread(threading.Thread):
|
||||
wx.CallAfter(self.callback, release) # Singularity -> Singularity
|
||||
break
|
||||
except:
|
||||
pyfalog.warning("Caught exception in run")
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
|
||||
Reference in New Issue
Block a user