Skip to content

Commit 1d7b4a2

Browse files
committed
doker upd
1 parent b50eebc commit 1d7b4a2

7 files changed

Lines changed: 46 additions & 16 deletions

File tree

.dockerignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.git
2+
.gitignore
3+
.venv
4+
__pycache__
5+
*.pyc
6+
*.pyo
7+
*.pyd
8+
.env
9+
data/raw
10+
data/clean
11+
notebooks

.env.example

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
DB_HOST=localhost
1+
DB_HOST=db
22
DB_PORT=5432
3-
DB_USER=postgres
4-
DB_PASSWORD=1234
3+
DB_USER=news_user
4+
DB_PASSWORD=CHANGE_ME_STRONG_PASSWORD
55
DB_ADMIN_DB=postgres
6-
DB_NEWS=db_news
7-
NEWSAPI_KEY =your_key
6+
DB_NEWS=news_db
7+
NEWSAPI_KEY=YOUR_REAL_NEWSAPI_KEY

DockerFile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM python:3.12-slim
2+
3+
WORKDIR /app
4+
5+
ENV PYTHONDONTWRITEBYTECODE=1
6+
ENV PYTHONUNBUFFERED=1
7+
8+
COPY requirements.txt .
9+
RUN pip install --no-cache-dir -r requirements.txt
10+
11+
COPY . .
12+
13+
CMD ["python", "main.py"]

main.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ def parse_args():
6464
type=int,
6565
default=1
6666
)
67+
parser.add_argument(
68+
"--language",
69+
type=str,
70+
default="ru"
71+
)
6772
return parser.parse_args()
6873

6974
def init_all_tables(debug: bool) -> None:

src/extract.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ def import_to_raw_json(data:dict[str, Any], key_word: str, page: int) -> str:
2323

2424

2525

26-
def make_extract_debug( key_word: str, page: int = 1, page_size: int = 100) -> tuple[str, int]:
26+
def make_extract_debug( key_word: str, page: int = 1, page_size: int = 100, language: str = "ru") -> tuple[str, int]:
2727
params = {
2828
"apiKey": settings.KEY_API,
29-
"language":settings.langueage,
29+
"language":language,
3030
"q": key_word,
3131
"pageSize" : page_size,
3232
"page" : page,
@@ -38,7 +38,7 @@ def make_extract_debug( key_word: str, page: int = 1, page_size: int = 100) -> t
3838
payload = data.json()
3939
logger.info(f"raise of status: {data.status_code}")
4040
payload["fetched_at"] = datetime.now().isoformat()
41-
payload["language"] = settings.langueage
41+
payload["language"] = language
4242
payload["key_word"] = key_word
4343
articles_count = len(payload.get("articles", []))
4444
if articles_count == 0:
@@ -58,10 +58,10 @@ def make_extract_debug( key_word: str, page: int = 1, page_size: int = 100) -> t
5858
logger.error("Error: sorry we can't parse JSON")
5959
raise
6060

61-
def make_extract_web( key_word: str, page: int = 1, page_size: int = 100) -> tuple[dict,int]:
61+
def make_extract_web( key_word: str, page: int = 1, page_size: int = 100, language:str = "ru") -> tuple[dict,int]:
6262
params = {
6363
"apiKey": settings.KEY_API,
64-
"language":settings.langueage,
64+
"language":language,
6565
"q": key_word,
6666
"pageSize" : page_size,
6767
"page" : page,
@@ -73,7 +73,7 @@ def make_extract_web( key_word: str, page: int = 1, page_size: int = 100) -> tup
7373
payload = data.json()
7474
logger.info(f"raise of status: {data.status_code}")
7575
payload["fetched_at"] = datetime.now().isoformat()
76-
payload["language"] = settings.langueage
76+
payload["language"] = language
7777
payload["key_word"] = key_word
7878
articles_count = len(payload.get("articles", []))
7979
if articles_count == 0:

src/pipeline.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ def merge_stats(stats: dict, page_stats: dict)-> None:
4141
for k,v in page_stats["prime_reason"].items():
4242
stats["prime_reason"][k] += v
4343

44-
def run_pipeline_for_web_user(user_id: int, search_request_id: int, key_word: str, limit: int, page_size: int) -> int:
44+
def run_pipeline_for_web_user(user_id: int, search_request_id: int, key_word: str, limit: int, page_size: int, language:str = "ru") -> int:
4545
statistic = make_empty_stats()
4646
num_of_news = 0
4747
page = 1
4848
while num_of_news < limit:
49-
payload, raw_articles_count = make_extract_web(key_word, page, page_size)
49+
payload, raw_articles_count = make_extract_web(key_word, page, page_size, language)
5050
if raw_articles_count == 0:
5151
logger.warning("there is no more artical")
5252
break
@@ -59,12 +59,12 @@ def run_pipeline_for_web_user(user_id: int, search_request_id: int, key_word: st
5959
logger.info(f"{num_of_news} news on key word {key_word} already aploaded")
6060
return num_of_news
6161

62-
def run_debug_pipeline(keyword: str, limit:int, page_size: int) -> int:
62+
def run_debug_pipeline(keyword: str, limit:int, page_size: int, language: str = "ru") -> int:
6363
num_of_news = 0
6464
page = 1
6565
while num_of_news < limit:
6666
max_rows = limit - num_of_news
67-
new_file_name, raw_articles_count = make_extract_debug(keyword, page, page_size)
67+
new_file_name, raw_articles_count = make_extract_debug(keyword, page, page_size, language)
6868
if raw_articles_count == 0:
6969
logger.warning("there is no more artical")
7070
break

src/worker.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,12 @@ def one_request() -> bool:
6363
keyword = request_row["keyword"]
6464
limit_count = request_row["limit_count"]
6565
page_size = request_row["page_size"]
66+
language = request_row["language"]
6667
logger.info(f"Pipeline starts for {user_id} on {search_request_id} by keyword {keyword}")
6768
mark_as_running(search_request_id)
6869

6970
try:
70-
amount_of_articles = run_pipeline_for_web_user(user_id, search_request_id, keyword, limit_count, page_size)
71+
amount_of_articles = run_pipeline_for_web_user(user_id, search_request_id, keyword, limit_count, page_size, language=language)
7172

7273
mark_as_success(search_request_id)
7374
logger.info(f"Pipeline finished successfully for {user_id} on {search_request_id} by {keyword}")

0 commit comments

Comments
 (0)