|
Пауза при выполнении кода без внешних компонент | ☑ | ||
---|---|---|---|---|
0
daixiao
24.07.18
✎
11:23
|
Ребята, простите, но оставлю тут ещё один способ для вас и будущего меня.
Посидел я, подумал и родил такую процедуру для вставки паузы при проведении документов в старой УТ. На удивление, работает. ХТТП и ФТП тоже тестил. Там не работает, ошибка генериться раньше, чем таймаут пройдёт. Процедура Пауза(ДлительностьВСекундах) Экспорт Если ДлительностьВСекундах>0 Тогда Попытка Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = "8.8.8.8"; Профиль.Таймаут = ДлительностьВСекундах; Профиль.ПортSMTP = 25; Почта = Новый ИнтернетПочта; Почта.Подключиться(Профиль); Исключение Конецпопытки; КонецЕсли; КонецПроцедуры |
|||
1
Fragster
гуру
24.07.18
✎
11:31
|
могут забанить, пинг локалхост или даже слип.экзе надежнее
|
|||
2
Локи-13
24.07.18
✎
11:36
|
ЗапуститьПриложение("powershell -command ""& {Start-Sleep -Seconds 30}""",,Истина);
|
|||
3
Nikoss
24.07.18
✎
11:38
|
какова практическая ценность "Пауза при выполнении кода"?
|
|||
4
Локи-13
24.07.18
✎
11:41
|
(3) полно. любой демон требует паузы
|
|||
5
Локи-13
24.07.18
✎
11:45
|
например, фоновое задание, которое должно каждый 5 секунд что-то делать, при этом сохранять состояние между вызовами.
Проще это реализовать как демона с паузой 5 сек. |
|||
6
Лефмихалыч
24.07.18
✎
11:46
|
(5) много ли добра в таких заданиях?..
|
|||
7
Лефмихалыч
24.07.18
✎
11:46
|
(2) спасибо, запомню
|
|||
8
Локи-13
24.07.18
✎
11:49
|
(6) обычно это многопоточка + варианты с бэкендом, когда нужен быстрый отклик, но инициализация занимает более 5 секунд
|
|||
9
daixiao
24.07.18
✎
11:51
|
(1) Кто забанит? 8.8.8.8? Там же нет никакого почтового сервера.
Вообще, хост не важен. Я как тестил, так и оставил. Главное - порт на хосте не должен reject'иться, а должен либо drop'аться, либо на нём кто-то должен висеть, но не SMTP. Работает, например, если у вас на сервере запущен веб-сервер. Укажите 127.0.0.1:80. (1) (2) Все другие давно перечисленные в Книга знаний: Перепроведение документов в 1С:Предприятие без блокировки других пользователей методы мне не захотелось. Ибо переедешь куда-нибудь на линукс (есть и такое в планах) и опять править. |
|||
10
Fragster
гуру
24.07.18
✎
12:00
|
(9) если порт будет закрыт, то у тебя ошибка будет разу же.
|
|||
11
Nikoss
24.07.18
✎
12:01
|
(9) и переезжать не придется никуда. Обновишь платформу и выражение из (0)
"На удивление, работает. ХТТП и ФТП тоже тестил. Там не работает, ошибка генериться раньше, чем таймаут пройдёт." Внезапно станет, на удивление, не работать)) |
|||
12
Fragster
гуру
24.07.18
✎
12:02
|
(9) >Ибо переедешь куда-нибудь на линукс (есть и такое в планах) и опять править.
пинг есть и под линуксом, в http://catalog.mista.ru/public/173394/ именно он используется для организации паузы для синхронного запуска |
|||
13
Garykom
гуру
24.07.18
✎
12:07
|
"вставки паузы при проведении документов в старой УТ" - мдя
|
|||
14
Garykom
гуру
24.07.18
✎
12:08
|
Сцуко когда уже поймут что есть другие более лучшие методы и главное штатные!!!!
|
|||
15
Fragster
гуру
24.07.18
✎
12:09
|
(13)(14) вот ты глумишься, а у меня когда-то робот так последовательность круглосуточно восстанавливал - по документу в секунду.
|
|||
16
almar
24.07.18
✎
12:09
|
Необходимость в паузе есть, если генерируешь пароли, используя Новый ГенераторСлучайныхЧисел. Если его 2 раза запустить в одну и ту же секунду, то он выдаст одинаковые случайные числа. Я использовал для паузы
ТД=ТекущаяДата(); Пока ТД=ТекущаяДата() Цикл КонецЦикла; |
|||
17
Fragster
гуру
24.07.18
✎
12:10
|
(16) >Необходимость в паузе есть, если генерируешь пароли, используя Новый ГенераторСлучайныхЧисел. Если его 2 раза запустить в одну и ту же секунду, то он выдаст одинаковые случайные числа.
нет |
|||
18
Garykom
гуру
24.07.18
✎
12:10
|
||||
19
Fragster
гуру
24.07.18
✎
12:10
|
(18) ага, в фоновом задании...
|
|||
20
Nikoss
24.07.18
✎
12:11
|
(16) еще и проц вешать, не комильфо
|
|||
21
Garykom
гуру
24.07.18
✎
12:13
|
(19) Извини но ты смешал в кучу.
Кто тебе мешает периодически проверять и запускать фоновое снова или не запускать если еще старое не закончилось? |
|||
22
Fragster
гуру
24.07.18
✎
12:14
|
(21) ты вообще пробовал запускать фоновые раз в секунду?
|
|||
23
Fragster
гуру
24.07.18
✎
12:16
|
это ты смешал вы кучу. в (4), (5), (8) все объяснено. если старт задания сравним с временем выполнения задания, то зачем перегружать? Проблемы при массовом одновременном входе в 1с не ловил никогда?
Вон, во фреше вообще общая очередь заданий сделана, чтобы не перегружать большим количеством одновременных запусков сервера. |
|||
24
Garykom
гуру
24.07.18
✎
12:18
|
(22) ОК кто мешает помещать задания в общую очередь через обработку ожидания?
|
|||
25
Fragster
гуру
24.07.18
✎
12:26
|
(24) а выполнять очередь кто будет? конкретный случай в (15) - фоновое получало границу последовательности, проводило следующий документ, если последовательность сбита, затем делало паузу в 1 секунду и все по кругу.
|
|||
26
Garykom
гуру
24.07.18
✎
12:29
|
(25) А выполнять фоновое, причем всего одно и может разные задания не только последовательность восстанавливать но и еще что заложишь.
|
|||
27
Fragster
гуру
24.07.18
✎
12:29
|
(26) а в фоновом дергать твою очередь заданий без паузы?
|
|||
28
Garykom
гуру
24.07.18
✎
12:29
|
(26)+ Фоновое крутится всегда, проверяя нет ли новых заданий.
А задания помещаешь с нужными паузами. |
|||
29
Fragster
гуру
24.07.18
✎
12:29
|
не тупи...
|
|||
30
Fragster
гуру
24.07.18
✎
12:31
|
повторяюсь, восстановление последовательности со скоростью один документ в секунду (чтобы не мешать остальным пользюкам)
|
|||
31
Garykom
гуру
24.07.18
✎
12:32
|
(30) Я тебя понял, просто реализовал самым простейшим способом работающим.
|
|||
32
Fragster
гуру
24.07.18
✎
12:46
|
(31) я понимаю этот способ (висящий клиент) во времена 7.7, но во времена 8 уже нет. Даже ответа на (27) не вижу, не говоря уже о том, что с клиента запихивать что-то одинаковое раз в секунду в некую очередь неэффективно. когда там есть разнообразие заданий, или, например, они должны генериться по событию - тогда да. И то, клиент тут не нужен, события должны прилетать в веб сервис, пулинг не эффективен.
|
|||
33
daixiao
24.07.18
✎
14:07
|
(14) Ишь ты.) Это какие? Современные штатные платформенные средства - есть, не спорю. А использовать их как? Переписать процедуру ЗаполнениеДокументов.ВыполнитьВосстановление и перепроверять при обновлении конфы? Свою процедуру ваять?
(11) (10) Да, есть такое. Имейте в виду, если рискнете использовать. (12) ping есть и под линуксом. Но перед использованием лучше сравнить параметры, они различаются. "ping.exe /?", "man ping". |
|||
34
Локи-13
24.07.18
✎
14:31
|
(9) powershell под линуксом тоже есть
|
|||
35
Fragster
гуру
24.07.18
✎
14:35
|
(33).3 если посмотришь исходники из (12), то посмотришь, что это там учитывается.
|
|||
36
Fragster
гуру
24.07.18
✎
14:35
|
(34) из коробки?
|
|||
37
Fragster
гуру
24.07.18
✎
14:35
|
тогда уж лучше sleep
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |