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 DEFAULT_TIMEZONE = "Europe/Sarajevo";
const CRAWLER_INTERVAL = parseInt(process.env.CRAWLER_INTERVAL) || 60;
const STOP_CRAWLER = !!parseInt(process.env.STOP_CRAWLER);
module.exports = { module.exports = {
APP_PORT, APP_PORT,
APP_URL, APP_URL,
DEFAULT_TIMEZONE DEFAULT_TIMEZONE,
CRAWLER_INTERVAL,
STOP_CRAWLER
}; };

View File

@@ -26,15 +26,14 @@ const crawlers = [
async function crawlAll() { async function crawlAll() {
for (let crawler of crawlers) { for (let crawler of crawlers) {
try { try {
const newRealEstates = await crawler.crawl(); return await crawler.crawl();
console.log("Number of new real estates : ", newRealEstates.length);
} catch (e) { } catch (e) {
console.log("Error crawling. Trying next crawler! ", e); console.log("Error crawling. Trying next crawler! ", e);
return [];
} }
} }
} }
(async () => { module.exports = {
await crawlAll(); 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 { .welcome-center-button {
width: 100%; width: 100%;
} }
.next-center-button { .next-center-button {
width: 50%; width: 50%;
left: 25%; left: 25%;
} }
.welcome-big-logo {
.welcome-big-logo {
font-size: 200pt; font-size: 200pt;
background-image: url(./images/logo.png); background-image: url(./images/logo.png);
background-size: contain; background-size: contain;
@@ -16,19 +15,17 @@
color: rgba(0, 0, 0, 0); color: rgba(0, 0, 0, 0);
} }
.no-ui-slider { .no-ui-slider {
width: 95% width: 95%;
} }
.centered-element { .centered-element {
margin-top: 200px; margin-top: 200px;
} }
.centered-element-small { .centered-element-small {
margin-top: 100px; margin-top: 100px;
} }
#map { #map {
height: 50%; height: 50%;
} }
@@ -38,9 +35,9 @@ body {
height: 100%; height: 100%;
margin: 0; margin: 0;
padding: 0; padding: 0;
font-family: 'Tangerine', serif; font-family: "Tangerine", serif;
} }
#floating-panel { #floating-panel {
top: 10px; top: 10px;
left: 25%; left: 25%;
@@ -49,7 +46,7 @@ body {
padding: 5px; padding: 5px;
border: 1px solid #999; border: 1px solid #999;
text-align: center; text-align: center;
font-family: 'Roboto', 'sans-serif'; font-family: "Roboto", "sans-serif";
line-height: 30px; line-height: 30px;
padding-left: 10px; padding-left: 10px;
} }

View File

@@ -14,6 +14,9 @@ AMAZON_REGION=eu-west-1
APP_URL=http://localhost:3001 APP_URL=http://localhost:3001
SOURCE_EMAIL=info@saburly.com 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===============# #=============== CRAWLER SETTINGS===============#
#==OLX== #==OLX==
OLX_MAX_PAGES=Restrict crawler to this number of pages 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 layout = require("express-layout");
const compression = require("compression"); 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 routes = require("./app/routes");
const { crawlAll } = require("./app/crawler/crawl");
const app = express(); const app = express();
@@ -26,3 +31,14 @@ app.use("/assets", express.static("./app/public"));
app.listen(APP_PORT, () => app.listen(APP_PORT, () =>
console.log(`Example app listening on port ${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", "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-start": "docker start pg_marketalerts",
"docker-stop": "docker stop pg_marketalerts", "docker-stop": "docker stop pg_marketalerts",
"crawl": "cd app/crawler && node crawl.js" "crawl": "cd app/crawler && node npmCrawl.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",