Merge branch 'start-crawler-loop-with-server' into 'master'

start crawler loop when server is started

See merge request saburly/marketalarm/web!34
This commit was merged in pull request #34.
This commit is contained in:
Bilal Catic
2019-09-27 09:22:17 +00:00
7 changed files with 46 additions and 21 deletions

View File

@@ -8,8 +8,13 @@ const APP_URL =
const DEFAULT_TIMEZONE = "Europe/Sarajevo";
const CRAWLER_INTERVAL = parseInt(process.env.CRAWLER_INTERVAL) || 60;
const STOP_CRAWLER = !!parseInt(process.env.STOP_CRAWLER);
module.exports = {
APP_PORT,
APP_URL,
DEFAULT_TIMEZONE
DEFAULT_TIMEZONE,
CRAWLER_INTERVAL,
STOP_CRAWLER
};

View File

@@ -26,15 +26,14 @@ const crawlers = [
async function crawlAll() {
for (let crawler of crawlers) {
try {
const newRealEstates = await crawler.crawl();
console.log("Number of new real estates : ", newRealEstates.length);
return await crawler.crawl();
} catch (e) {
console.log("Error crawling. Trying next crawler! ", e);
return [];
}
}
}
(async () => {
await crawlAll();
})();
module.exports = {
crawlAll
};

5
app/crawler/npmCrawl.js Normal file
View File

@@ -0,0 +1,5 @@
const { crawlAll } = require("./crawl");
(async () => {
await crawlAll();
})();

View File

@@ -1,14 +1,13 @@
.welcome-center-button {
width: 100%;
.welcome-center-button {
width: 100%;
}
.next-center-button {
.next-center-button {
width: 50%;
left: 25%;
left: 25%;
}
.welcome-big-logo {
.welcome-big-logo {
font-size: 200pt;
background-image: url(./images/logo.png);
background-size: contain;
@@ -16,19 +15,17 @@
color: rgba(0, 0, 0, 0);
}
.no-ui-slider {
width: 95%
width: 95%;
}
.centered-element {
margin-top: 200px;
}
.centered-element-small {
margin-top: 100px;
}
#map {
height: 50%;
}
@@ -38,9 +35,9 @@ body {
height: 100%;
margin: 0;
padding: 0;
font-family: 'Tangerine', serif;
font-family: "Tangerine", serif;
}
#floating-panel {
top: 10px;
left: 25%;
@@ -49,7 +46,7 @@ body {
padding: 5px;
border: 1px solid #999;
text-align: center;
font-family: 'Roboto', 'sans-serif';
font-family: "Roboto", "sans-serif";
line-height: 30px;
padding-left: 10px;
}

View File

@@ -14,6 +14,9 @@ AMAZON_REGION=eu-west-1
APP_URL=http://localhost:3001
SOURCE_EMAIL=info@saburly.com
CRAWLER_INTERVAL=Interval to run cralwer(s), in seconds
STOP_CRAWLER=Non-zero value will skip crawler execution
#=============== CRAWLER SETTINGS===============#
#==OLX==
OLX_MAX_PAGES=Restrict crawler to this number of pages

View File

@@ -6,8 +6,13 @@ const bodyParser = require("body-parser");
const layout = require("express-layout");
const compression = require("compression");
const { APP_PORT } = require("./app/config/appConfig");
const {
APP_PORT,
CRAWLER_INTERVAL,
STOP_CRAWLER
} = require("./app/config/appConfig");
const routes = require("./app/routes");
const { crawlAll } = require("./app/crawler/crawl");
const app = express();
@@ -26,3 +31,14 @@ app.use("/assets", express.static("./app/public"));
app.listen(APP_PORT, () =>
console.log(`Example app listening on port ${APP_PORT}!`)
);
let crawlerRunning = STOP_CRAWLER;
const crawl = () => {
if (!crawlerRunning) {
crawlerRunning = true;
crawlAll().then(newRealEstates => {
crawlerRunning = false;
});
}
};
setInterval(crawl, CRAWLER_INTERVAL * 1000);

View File

@@ -11,7 +11,7 @@
"setup": "docker build -t marketalerts . && docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=marketalerts --name pg_marketalerts -d -p 5432:5432 marketalerts && sleep 4 && npm run migrate",
"docker-start": "docker start pg_marketalerts",
"docker-stop": "docker stop pg_marketalerts",
"crawl": "cd app/crawler && node crawl.js"
"crawl": "cd app/crawler && node npmCrawl.js"
},
"repository": {
"type": "git",