(self, site, spawn=False)
| 68 | yield (site_id, address, port, hashfield, peer.reputation, int(peer.time_added), int(peer.time_found)) |
| 69 | |
| 70 | def savePeers(self, site, spawn=False): |
| 71 | if spawn: |
| 72 | # Save peers every hour (+random some secs to not update very site at same time) |
| 73 | gevent.spawn_later(60 * 60 + random.randint(0, 60), self.savePeers, site, spawn=True) |
| 74 | if not site.peers: |
| 75 | site.log.debug("Peers not saved: No peers found") |
| 76 | return |
| 77 | s = time.time() |
| 78 | site_id = self.site_ids.get(site.address) |
| 79 | cur = self.getCursor() |
| 80 | try: |
| 81 | cur.execute("DELETE FROM peer WHERE site_id = :site_id", {"site_id": site_id}) |
| 82 | cur.cursor.executemany( |
| 83 | "INSERT INTO peer (site_id, address, port, hashfield, reputation, time_added, time_found) VALUES (?, ?, ?, ?, ?, ?, ?)", |
| 84 | self.iteratePeers(site) |
| 85 | ) |
| 86 | except Exception as err: |
| 87 | site.log.error("Save peer error: %s" % err) |
| 88 | site.log.debug("Peers saved in %.3fs" % (time.time() - s)) |
| 89 | |
| 90 | def initSite(self, site): |
| 91 | super(ContentDbPlugin, self).initSite(site) |
no test coverage detected