Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 21, 2018 21:10:29

8toni8
Зарегистрирован: 2018-01-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

Написал программку которая крутится в цикле(код не хотелось бы выкладывать). Но надеюсь, что это и не важно.
Скомпелировал байт-код таким образом:

 import py_compile
py_compile.compile("main.py")
py_compile.compile("twofile.py")
Не знаю кстати, правильно ли это или нет?
Запускаю программу под Windows Server, с помощью bat-файла:
“start python main.pyc”
Программа запускается в “командной строке”, заходит на почтовый сервер, копирует письмо, производит разбор сообщения и так по кругу, с небольшими тайм аутами…
Если сообщений нет, ждет когда появятся…
Собственно не чего не обычного.
Но по прошествии нескольких часов, командная строка просто закрывается…
Подскажите пожалуйста, может быть я не правильно запускаю программу? Как это можно продиагностировать(то есть узнать причину автоматического завершения). Или посоветуйте, что почитать на эту тему?

Офлайн

#2 Апрель 21, 2018 21:42:10

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

самое простое обьяснение в какойто момент вызываеться исключение, логирейте все исклчения в файл и смотрите.\
https://stackoverflow.com/questions/8050775/using-pythons-logging-module-to-log-all-exceptions-and-errors



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Апрель 21, 2018 22:36:08

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

PEHDOM
логирейте все исклчения в файл
8toni8
одскажите пожалуйста, может быть я не правильно запускаю программу?
Запустите консоль ручками, уберите start :python main.pyc. Тогда у вас останется открытая консоль и в ней будут видны сообщения.

Не очень понятно зачем компилировать? Питоновские файлы и так прекрасно запустятся.



Офлайн

#4 Апрель 22, 2018 04:54:15

8toni8
Зарегистрирован: 2018-01-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

doza_and
Запустите консоль ручками, уберите start :python main.pyc. Тогда у вас останется открытая консоль и в ней будут видны сообщения.
Да, я пока создавал тему, уже понял, что нужно в IDLE запустить, уже кстати выловил ошибку, буду разбираться…
doza_and
Не очень понятно зачем компилировать? Питоновские файлы и так прекрасно запустятся.
По, тому что я пока не понимаю, надо вообще компилировать свои файлы в байт-код? А как вообще можно сделать код закрытым? В Си++, там понятно, откомпелировал и все. А с Питоном как быть не понятно

Офлайн

#5 Апрель 22, 2018 13:16:03

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

8toni8
А как вообще можно сделать код закрытым?
Короткий ответ - никак. Вы выбрали не тот язык если хотите секретить код. pyo файлы легко декмпилируются и по сути от исходников отличаются только отсутствием комментариев.

p.s.
Вы на форуме предложите. Даю свой исходный код. Цена вопроса 100…0 руб. Посмотрите сколько будет желающих его получить. Подозреваю что даром не возьмут. Так что и секретить тут вам пока нечего.



Отредактировано doza_and (Апрель 22, 2018 13:22:18)

Офлайн

#6 Июнь 22, 2018 20:24:18

8toni8
Зарегистрирован: 2018-01-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

Ну а если например пишите программу для заказчика на Python, то как вы себя обезопаситиваете к примеру от “кидка”? Ведь заказчик сможет крутить ваш код как хочет…

Офлайн

#7 Июнь 23, 2018 09:42:08

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

давайте для начала определимся с терминами “от “кидка” и ”крутить ваш код как хочет“.что вы конкретно хотите?
Эту проблему можно разделить на несколько частей юридическую,комерческую, психологическую и техническую.
Юридическая понятно, заранее договариваетесь и прописываете в договоре, что кому и в каком порядке передает и оплачивает, у кого остаются исключительные права на программу и прочее.. например что исходники вы передаете только после подписи заказчиком акта, где указывается степень готовности программы, и сумму которую заказчик вам за это обязуется оплатить. По крайне мере с этой бумагой вы можете пойти в суд, если конечно заказчик проживает с вами в одной стране, а не находиться гденить на голопагоских островах. В любом случае вам нужна консультация юриста по этому вопросу а не програмиста.

Комерческая: Лицензии. Контракты. Условия и положения. Это все еще работает, даже когда люди могут читать код. Обратите внимание, что некоторые из ваших компонентов на базе Python могут потребовать, чтобы вы платили комиссионные, прежде чем продавать программное обеспечение с использованием этих компонентов. Кроме того, некоторые лицензии с открытым исходным кодом запрещают вам скрывать источник или источник этого компонента.

Психологическая основывается на том что в общем в большинсвтве случаев в этом мире все основывается на доверии. Заранее проверте заказчика, поищите отзывы о нем, пообщайтесь с теми кто раньше работал с ними и просто не связывайтесь с ненадежными людьми.

Техническая часть во многом зависит от того что вы делаете и что вы хотите?
1. Быть единственным ”погромистом" у которого есть исходники и который может вносить изменения в функционал? Для этого вы выбрали не тот ЯП . Хотя есть шифрование и трансляция в модули расширения с помощью Cython или Nuitka.
вот пару статей на эту тему:
https://habr.com/post/138537/
https://habr.com/post/189772/
Правда для этого вам нужно сразу писать код с оглядкой на это. Мой опыт работы с Nuitka говорит о том что то что произвольно написаный код работающий в пайтоне не всегда также работает после трансляции.

2. Чтобы заказчик заплатил вам, а не сказал ну мы посмотрим сейчас, протестируем, а сам исчез с вашим кодом?
Тут во многом зависит от того что вы делаете. Если это сайт какой на джанге, фласке, бутылке и тому подобному, то просо не давайте исходники. Давайте только адрес сайта на посмотреть снаружи. Заказчик заходит, нажимает кнопочки формочки, если его устраивает производит оплату и получает исходники.
Другое дело если вы пишете самостоятельную программу, или модуль к уже существующей программе.
тогда можно давать ограниченый удаленный доступ чтобы заказчик мог подключиться к удаленному хосту запустить-протестировать на нем программу\модуль, но не мог скопировать исходники.

НО всеже ИМХО, главное не связывайтесь с ненадежными заказчиками, как бы вам ваша внутрення жаба не говрила обратное. Несмотря на все ваши заморочки, договоры, и технические ухищрения, “кидала” когда поймет что кинуть не выйдет, всеравно не заплатит , а просто пойдет искать другого лоха, а вы потратите на него свое время и нервы.






==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 23, 2018 09:55:26)

Офлайн

#8 Июнь 23, 2018 12:12:59

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Автоматическое завершение программы

> А как вообще можно сделать код закрытым?

В этом тебе поможет cython.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version