|
14.04.2007, 04:29 | #1 |
Участник
|
Снять задание сервера пакетной обработки
Подскажите, реально ли "убить" задание выполняемое севером пакетной обработки каким-либо способом, кроме остановки экземпляра сервера?
Стандартный функционал по кнопке "Удалить задание" из формы управления заданиями удаляет задание из списка заданий, не более того. Если пакетный сервер запущен как служба, то тогда придётся рестартовать службу? Это все равно, что снимать задачу через диспетчер задач. Некрасиво, да и могут быть последствия. Знаю, что код для пакетных задач надо правильно писать, но Axapta все таки не умеет корректно завершать себя, как например службы ОС. И даже правильный код может "влипнуть" в блокировку. Вопрос про AX3. |
|
14.04.2007, 11:16 | #2 |
Участник
|
Если код запущен, то он запущен - остановить можно только убив процесс
|
|
16.04.2007, 12:02 | #3 |
Administrator
|
В качестве идеи (не проверял): а если завершить сессию пользователя, под которым работает пакетный сервер, через Активных пользователей в Аксапте? Правда службу, очевидно, все равно придется перезапускать.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
16.04.2007, 15:30 | #4 |
Злыдни
|
Есть еще один вариант, но он ручной: при длительных активных операциях пакетный сервер "захватывает" себе дополнительные сессии в базе данных (сессии отображаются через запятую). Прибейте сессию, которая указана последней в списке активных пользователей. В 99% пакетный сервер завершит операцию и возвратиться в режим ожидания.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. Последний раз редактировалось KiselevSA; 16.04.2007 в 15:34. Причина: Очепятка |
|
18.04.2007, 09:44 | #5 |
Участник
|
Всем спасибо! Последний вариант интересен. Подумаю, как его можно превратить в "автоматизированный" вариант.
|
|
23.04.2007, 23:47 | #6 |
Участник
|
Чтобы остановить работающее задание сервера пакетной обработки - надо завершить сеанс пользователя через окно "Активные пользователи".
--- А чтобы автоматизировать процессы на пакетном сервере я стартую клиента аксапты в назначенное время по планировщику виндовому, в командной строке в качестве параметра передается имя пакета для выполнения (доработка), по окончании отработки пакета клиент аксапты завершает свою работу(доработка). О старте и завершении работы пакета - шлется письмо утилитой "BLAT". |
|
24.04.2007, 04:53 | #7 |
Участник
|
Убить пользователя = убить сервер пакетной обработки.
Сервер должен крутиться постоянно(а не отрабатывать конкретные пакеты), поэтому придется дописывать некий скрипт, стартующий его заново и проверяющий, чтобы процесс был в единственном экземпляре. Вешать его на запуск в планировщик на ежеминутный(например) старт. То же попробую, спасибо за наводку. Вариант не такой элегантный, как предложенный KiselevSA, более топорный, но жизнеспособный. |
|
24.04.2007, 12:28 | #8 |
Участник
|
Ну да, по сути верно.
Цитата:
Если приложение работает, то запуск нового экземпляра в планировщике не произойдет, он "видит" этот сеанс и новый не открывает. А если приложение загасится, то через минуту по планировщику стартанет новое. У нас например не один экземпляр пакетного сервера используется. Есть несколько пакетов, периодически\постоянно выполняемых. Планировщик запускает клиента Аксапты, тот стартует, переходит в режим сервера, подцепляет нужный пакет (и так отдельно по каждому пакету). Все происходит под подлогиненным пользователем на сервере (это из числа "неудобств"). |
|