Objawy:
Rozwiązanie:
pip install -r requirements.txt
pip list
python -m venv taskinity_env
source taskinity_env/bin/activate # Linux/macOS
taskinity_env\Scripts\activate # Windows
pip install -r requirements.txt
Objawy:
Rozwiązanie:
sudo apt-get update
sudo apt-get install python3-dev build-essential
sudo yum install python3-devel gcc
xcode-select --install
pip install package_name
Objawy:
Rozwiązanie:
mkdir -p config logs flows dsl_definitions emails
python -c "from notification_service import ensure_config; ensure_config()"
python -c "from email_pipeline import ensure_config; ensure_config()"
python -c "from advanced_logging import ensure_logging_config; ensure_logging_config()"
Objawy:
Rozwiązanie:
python -c "import json; json.load(open('config/notification_config.json'))"
python -c "import json; json.load(open('config/email_config.json'))"
python -c "import json; json.load(open('config/logging_config.json'))"
diff config/notification_config.json config/notification_config.json.bak
cp config/notification_config.json.bak config/notification_config.json
Objawy:
Rozwiązanie:
parse_dsl
do debugowania:
from flow_dsl import parse_dsl
try:
parsed = parse_dsl(flow_dsl)
print("Poprawnie sparsowano DSL:")
print(parsed)
except Exception as e:
print(f"Błąd parsowania DSL: {str(e)}")
Objawy:
Rozwiązanie:
from flow_dsl import task_registry
print("Zarejestrowane zadania:")
for task_name, task_func in task_registry.items():
print(f"- {task_name}: {task_func}")
@task(name="Moje zadanie")
def my_task(input_data):
print(f"Rozpoczynam zadanie my_task z danymi: {input_data}")
# Implementacja
result = {"result": "wartość"}
print(f"Kończę zadanie my_task z wynikiem: {result}")
return result
results = run_flow_from_dsl(flow_dsl, input_data, debug=True)
Objawy:
Rozwiązanie:
@task(name="Moje zadanie")
def my_task(input_data):
try:
# Implementacja
return result
except Exception as e:
print(f"Błąd w zadaniu my_task: {str(e)}")
# Możesz zwrócić wartość domyślną lub ponownie zgłosić wyjątek
raise
cat logs/flow_dsl.log
results = run_flow_from_dsl(flow_dsl, input_data, debug=True)
Objawy:
Rozwiązanie:
# Linux/macOS
lsof -i :8765
# Windows
netstat -ano | findstr :8765
mini_dashboard.py
:
app.run(host="0.0.0.0", port=8766) # Zmień port na inny
pip install fastapi uvicorn jinja2
Objawy:
Rozwiązanie:
cat logs/mini_dashboard.log
mkdir -p flows logs dsl_definitions
ls -la static/
Objawy:
Rozwiązanie:
cat logs/mini_dashboard.log
from flow_dsl import parse_dsl
try:
parsed = parse_dsl(dsl_content)
print("Poprawnie sparsowano DSL")
except Exception as e:
print(f"Błąd parsowania DSL: {str(e)}")
import json
try:
input_data = json.loads(input_json)
print("Poprawnie sparsowano dane wejściowe")
except Exception as e:
print(f"Błąd parsowania danych wejściowych: {str(e)}")
Objawy:
Rozwiązanie:
from notification_service import load_config
config = load_config()
print("Konfiguracja SMTP:")
print(config["email"])
from notification_service import load_config
config = load_config()
print(f"Powiadomienia włączone: {config['enabled']}")
print(f"Powiadomienia email włączone: {config['email']['enabled']}")
cat logs/notification_service.log
import smtplib
server = smtplib.SMTP("smtp.example.com", 587)
server.starttls()
server.login("user@example.com", "password123")
server.quit()
Objawy:
Rozwiązanie:
from notification_service import load_config
config = load_config()
print("Konfiguracja Slack:")
print(config["slack"])
from notification_service import load_config
config = load_config()
print(f"Powiadomienia włączone: {config['enabled']}")
print(f"Powiadomienia Slack włączone: {config['slack']['enabled']}")
cat logs/notification_service.log
import requests
import json
webhook_url = "https://hooks.slack.com/services/XXX/YYY/ZZZ"
data = {"text": "Test powiadomienia Slack"}
response = requests.post(webhook_url, data=json.dumps(data), headers={"Content-Type": "application/json"})
print(f"Status: {response.status_code}")
print(f"Odpowiedź: {response.text}")
Objawy:
Rozwiązanie:
run_parallel_flow_from_dsl
:
from parallel_executor import run_parallel_flow_from_dsl
results = run_parallel_flow_from_dsl(flow_dsl, input_data)
from flow_dsl import parse_dsl
parsed = parse_dsl(flow_dsl)
print("Zależności między zadaniami:")
for task, deps in parsed["dependencies"].items():
print(f"- {task} zależy od: {deps}")
results = run_parallel_flow_from_dsl(flow_dsl, input_data, max_workers=8)
Objawy:
Rozwiązanie:
cat logs/parallel_executor.log
from flow_dsl import run_flow_from_dsl
results = run_flow_from_dsl(flow_dsl, input_data)
Objawy:
Rozwiązanie:
ps aux | grep flow_scheduler
from flow_scheduler import Scheduler
scheduler = Scheduler()
print("Harmonogramy:")
for schedule in scheduler.list_schedules():
print(f"- {schedule}")
cat logs/flow_scheduler.log
python flow_scheduler.py start --debug
Objawy:
Rozwiązanie:
ls -la dsl_definitions/
from flow_dsl import load_dsl, parse_dsl
dsl_content = load_dsl("dsl_definitions/my_flow.dsl")
try:
parsed = parse_dsl(dsl_content)
print("Poprawnie sparsowano DSL")
except Exception as e:
print(f"Błąd parsowania DSL: {str(e)}")
cat logs/flow_scheduler.log
from flow_dsl import load_dsl, run_flow_from_dsl
dsl_content = load_dsl("dsl_definitions/my_flow.dsl")
results = run_flow_from_dsl(dsl_content, {})
Objawy:
Rozwiązanie:
from email_pipeline import load_config
config = load_config()
print("Konfiguracja IMAP:")
print(config["imap"])
print("Konfiguracja SMTP:")
print(config["smtp"])
import socket
imap_server = "imap.example.com"
imap_port = 993
smtp_server = "smtp.example.com"
smtp_port = 587
try:
socket.create_connection((imap_server, imap_port), timeout=5)
print(f"Serwer IMAP {imap_server}:{imap_port} jest dostępny")
except Exception as e:
print(f"Serwer IMAP {imap_server}:{imap_port} nie jest dostępny: {str(e)}")
try:
socket.create_connection((smtp_server, smtp_port), timeout=5)
print(f"Serwer SMTP {smtp_server}:{smtp_port} jest dostępny")
except Exception as e:
print(f"Serwer SMTP {smtp_server}:{smtp_port} nie jest dostępny: {str(e)}")
cat logs/email_pipeline.log
import imaplib
import smtplib
# Test IMAP
imap = imaplib.IMAP4_SSL("imap.example.com", 993)
imap.login("user@example.com", "password123")
imap.select("INBOX")
imap.logout()
# Test SMTP
smtp = smtplib.SMTP("smtp.example.com", 587)
smtp.starttls()
smtp.login("user@example.com", "password123")
smtp.quit()
Objawy:
Rozwiązanie:
from email_pipeline import load_config
config = load_config()
print("Konfiguracja automatycznych odpowiedzi:")
print(config["auto_reply"])
from email_pipeline import load_config
config = load_config()
print(f"Automatyczne odpowiedzi włączone: {config['auto_reply']['enabled']}")
cat logs/email_pipeline.log
from email_pipeline import EmailProcessor
processor = EmailProcessor()
email_data = {
"id": "test_id",
"from": "sender@example.com",
"to": "recipient@example.com",
"subject": "Test",
"body": "Test message"
}
processor.send_auto_reply(email_data, "default")
Objawy:
Rozwiązanie:
mkdir -p logs
from advanced_logging import load_logging_config
config = load_logging_config()
print("Konfiguracja logowania:")
print(config)
from advanced_logging import load_logging_config
config = load_logging_config()
print(f"Logowanie do pliku włączone: {config['file']['enabled']}")
from advanced_logging import setup_logger
logger = setup_logger("test")
logger.info("Test info message")
logger.debug("Test debug message")
logger.warning("Test warning message")
logger.error("Test error message")
print("Sprawdź plik logs/test.log")
Objawy:
Rozwiązanie:
from advanced_logging import load_logging_config
config = load_logging_config()
print("Poziomy logowania:")
print(f"Konsola: {config['console']['level']}")
print(f"Plik: {config['file']['level']}")
for module, level in config["modules"].items():
print(f"{module}: {level}")
from advanced_logging import load_logging_config, save_logging_config
config = load_logging_config()
config["console"]["level"] = "DEBUG"
config["file"]["level"] = "DEBUG"
config["modules"]["flow_dsl"] = "DEBUG"
save_logging_config(config)
from advanced_logging import setup_logger
logger = setup_logger("flow_dsl")
logger.debug("Test debug message")
print("Sprawdź plik logs/flow_dsl.log")
ImportError: No module named 'flow_dsl'
Przyczyna: Moduł flow_dsl
nie jest dostępny w ścieżce Pythona.
Rozwiązanie:
cd /path/to/hubmail/dsl
import sys
sys.path.append("/path/to/hubmail/dsl")
pip install -e .
KeyError: 'task_name'
Przyczyna: Zadanie o podanej nazwie nie istnieje w rejestrze zadań.
Rozwiązanie:
@task(name="task_name")
def task_name():
pass
from my_module import task_name
from flow_dsl import task_registry
print("Zarejestrowane zadania:")
for task_name, task_func in task_registry.items():
print(f"- {task_name}: {task_func}")
SyntaxError: invalid syntax
w DSLPrzyczyna: Niepoprawna składnia DSL.
Rozwiązanie:
parse_dsl
do debugowania:
from flow_dsl import parse_dsl
try:
parsed = parse_dsl(flow_dsl)
print("Poprawnie sparsowano DSL:")
print(parsed)
except Exception as e:
print(f"Błąd parsowania DSL: {str(e)}")
SMTPAuthenticationError: (535, b'5.7.8 Authentication failed')
Przyczyna: Niepoprawne dane uwierzytelniające SMTP.
Rozwiązanie:
from notification_service import load_config
config = load_config()
print("Konfiguracja SMTP:")
print(config["email"])
ConnectionRefusedError: [Errno 111] Connection refused
Przyczyna: Nie można połączyć się z serwerem.
Rozwiązanie:
telnet server_address port
FileNotFoundError: [Errno 2] No such file or directory
Przyczyna: Plik nie istnieje.
Rozwiązanie:
ls -la /path/to/file
chmod +r /path/to/file
mkdir -p /path/to/directory
chmod +w /path/to/directory
PermissionError: [Errno 13] Permission denied
Przyczyna: Brak uprawnień do pliku lub katalogu.
Rozwiązanie:
ls -la /path/to/file
chmod +rw /path/to/file
chown user:group /path/to/file
sudo python my_script.py
JSONDecodeError: Expecting value
Przyczyna: Niepoprawny format JSON.
Rozwiązanie:
python -c "import json; json.load(open('/path/to/file.json'))"
cp config/notification_config.json.bak config/notification_config.json