added delays
This commit is contained in:
67
debug_send_rabbitmq_parsed.py
Normal file
67
debug_send_rabbitmq_parsed.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import json
|
||||
import pika
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# --- КОНФИГУРАЦИЯ ---
|
||||
RABBITMQ_URL = os.getenv("RABBITMQ_URL", "amqp://guest:guest@localhost/")
|
||||
EXCHANGE_NAME = os.environ.get("RABBITMQ_EXCHANGE", "vstu_schedule")
|
||||
|
||||
# Параметры фейкового события
|
||||
FACULTET = "fevt"
|
||||
IS_NEW = False
|
||||
|
||||
# Формируем структуру состояния (state), которую ожидает консьюмер
|
||||
mock_state = {
|
||||
"excel": {
|
||||
"url": "https://www.vstu.ru/upload/raspisanie/z/ОН_ФЭВТ_TEST.xls",
|
||||
"sha1hash": "test_hash_8a7b6c5d4e3f2a1",
|
||||
"last_changed": "2026-04-05 10:00:00",
|
||||
"uniqpath": "vstu.ru/rasp?dep=fevt/TEST.xls",
|
||||
# Важно: этот файл должен реально существовать на сервере fazziclay.com/api/v1/.../parsed/
|
||||
# Иначе Летописец не сможет скачать JSON
|
||||
"json_represent": "он_фэвт_2 курс.json",
|
||||
"facultet": FACULTET
|
||||
},
|
||||
"sheets": {},
|
||||
"actual_at": 1774475864
|
||||
}
|
||||
|
||||
mock_payload = {
|
||||
"type": "excel_file_parsed_not_same",
|
||||
"is_new": IS_NEW,
|
||||
"state": mock_state
|
||||
}
|
||||
|
||||
def send_test_event():
|
||||
try:
|
||||
print(f"[*] Connecting to RabbitMQ: {RABBITMQ_URL}")
|
||||
connection = pika.BlockingConnection(pika.URLParameters(RABBITMQ_URL))
|
||||
channel = connection.channel()
|
||||
|
||||
# Гарантируем, что обменник существует
|
||||
channel.exchange_declare(exchange=EXCHANGE_NAME, exchange_type='topic', durable=True)
|
||||
|
||||
routing_key = f"parser.excel_parsed.{FACULTET}"
|
||||
|
||||
print(f"[*] Publishing mock event to '{routing_key}'...")
|
||||
channel.basic_publish(
|
||||
exchange=EXCHANGE_NAME,
|
||||
routing_key=routing_key,
|
||||
properties=pika.BasicProperties(
|
||||
content_type="application/json",
|
||||
delivery_mode=2 # Persistent
|
||||
),
|
||||
body=json.dumps(mock_payload, ensure_ascii=False).encode('utf-8')
|
||||
)
|
||||
|
||||
print("[+] Test event published successfully!")
|
||||
connection.close()
|
||||
|
||||
except Exception as e:
|
||||
print(f"[!] Failed to publish test event: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
send_test_event()
|
||||
@@ -18,7 +18,7 @@ def sibling_clear_to_date(s: str):
|
||||
return s.lower().replace("(последнее изменение:", "").replace(")", "").strip()
|
||||
|
||||
# Парсит ссылки на эксель .xls & .xlsx файлы и выдаёт их
|
||||
def parse_links(facultets):
|
||||
def parse_links(facultets, DEBUG_NO_LINKS_DELAY=False):
|
||||
session = requests.Session()
|
||||
session.headers = CaseInsensitiveDict(
|
||||
{
|
||||
@@ -58,9 +58,11 @@ def parse_links(facultets):
|
||||
}
|
||||
print("Found in vstu.ru: ", record)
|
||||
EXCEL_LINKS.append(record)
|
||||
st = random.randint(1, 10)/10
|
||||
print(f"sleep {st}s")
|
||||
time.sleep(st)
|
||||
|
||||
if not DEBUG_NO_LINKS_DELAY:
|
||||
st = random.randint(1, 10)/10
|
||||
print(f"sleep {st}s")
|
||||
time.sleep(st)
|
||||
|
||||
return sorted(EXCEL_LINKS, key=lambda x: x['url'])
|
||||
|
||||
|
||||
4
main.py
4
main.py
@@ -26,6 +26,7 @@ EXCHANGE_NAME = os.environ.get("RABBITMQ_EXCHANGE", "vstu_schedule")
|
||||
INFINITY_LOOP = os.environ.get("INFINITY_LOOP", "no").lower() in ['yes', "true"]
|
||||
parser.LOGGING = LOGGING = os.environ.get("PARSER_LOGGING", "no").lower() in ['yes', "true"]
|
||||
|
||||
|
||||
try:
|
||||
connection = pika.BlockingConnection(pika.URLParameters(RABBITMQ_URL))
|
||||
channel = connection.channel()
|
||||
@@ -48,6 +49,7 @@ PARSED_DIR = "parsed"
|
||||
|
||||
DEBUG_ONE_FAC = None #'fevt'
|
||||
DEBUG_NO_SAVE_STATES = False
|
||||
DEBUG_NO_LINKS_DELAY = True
|
||||
|
||||
def parse_sheets(download_place):
|
||||
to_return = {}
|
||||
@@ -168,7 +170,7 @@ def run_session():
|
||||
|
||||
|
||||
print("main(); parse links starting...")
|
||||
EXCEL_LINKS = links_parser.parse_links(FACULTETS if DEBUG_ONE_FAC is None else [DEBUG_ONE_FAC])
|
||||
EXCEL_LINKS = links_parser.parse_links(FACULTETS if DEBUG_ONE_FAC is None else [DEBUG_ONE_FAC], DEBUG_NO_LINKS_DELAY=DEBUG_NO_LINKS_DELAY)
|
||||
|
||||
if len(EXCEL_LINKS) < 5 and not DEBUG_ONE_FAC:
|
||||
raise Exception("Safety exception: excel links count < 5; maybe in vstu.ru tech works")
|
||||
|
||||
Reference in New Issue
Block a user