Я написал небольшой скрипт на Python для выполнения основных задач. На моей локальной машине все отлично работает. Но когда я запускаю Windows Server 2008 R2 , я получаю эту ошибку, выполняя точку входа run.py
Traceback (последний вызов был последним):
Файл "run.py", строка 1, в
Рабочий импорта
Python 3.6 без модуля с именами рабочих
Я действительно не вижу, что я делаю неправильно, все кажется нормальным.
Это моя структура папок
db_utils
entity
files_utils
workers
__pycache__
__init__.py
Worker.py
run.py
Код для run.py:
from workers.Worker import Worker
import time
import os
while(True):
try:
print("Beginning")
worker = Worker()
worker.sendEmails()
print("Execution successfull")
except Exception as e:
if hasattr(e, 'message'):
print(e.message)
else:
print("Execution error")
finally:
time.sleep(10)
А код для Worker.py -
from db_utils.DBManager import SessionFactory
import datetime
from datetime import datetime
from entity.Email import Email
from pushs.Emailer import Emailer
class Worker():
_DATE_FORMAT = '%%Y-%%m-%%d'
_SIMPLE_DATE_FORMAT = '%Y-%m-%d'
def getUnsentEmail(self):
""" Cette fonction retourne la liste des emails qui n'ont pas encore été envoyés"""
sessionFactory = SessionFactory()
session = sessionFactory.Session()
emails = []
connection = sessionFactory.getConnection()
query = "select * from post_email where statut = 'PENDING' "
result = connection.execute(query)
for row in result:
tmpElt = Email(row)
emails.append(tmpElt)
#à ce niveau on a tous les mails qui n'ont pas encore étés envoyés
#
session.close()
return emails
def sendEmails(self):
emails = self.getUnsentEmail()
sessionFactory = SessionFactory()
session = sessionFactory.Session()
connection = sessionFactory.getConnection()
for email in emails:
emailer = Emailer()
result = emailer.sendEmail(email)
#si le résultat est False le mail n'a pas été envoyé
if result.get("result") is False:
currentDateTime = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
print(currentDateTime)
query = "update emails set statut = 'PENDING', last_execution_date = str_to_date('"+currentDateTime+"', '%%Y-%%m-%%d %%H:%%i:%%s'), last_execution_message = '"+result.get('message')+"' ,last_execution_result = 'NOK' where id = "+str(email.id)
connection.execute(query)
else:
currentDateTime = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
print(currentDateTime)
query = "update emails set statut = 'DONE', last_execution_date = str_to_date('"+currentDateTime+"', '%%Y-%%m-%%d %%H:%%i:%%s'), last_execution_message = '"+result.get('message')+"' ,last_execution_result = 'OK' where id = "+str(email.id)
connection.execute(query)
session.close()
Ил также обнаружил, что проблема связана не только с этим приложением, но все скрипты Python, которые у меня есть на этом сервере, ведут себя одинаково.