Запуск нескольких проектов в многопотоке с разными входящими переменными в каждом потоке?

wellgo

Client
Регистрация
05.02.2019
Сообщения
10
Благодарностей
0
Баллы
1
Добрый день, искал решение, не нашел.
Вопрос: Как запустить несколько проектов в многопотоке с разными входящими переменными в каждом потоке?

Условно в 7 вечера запускается проект, который создает n-ное количество .csv-файлов:
  • acc01.csv
  • acc02.csv
  • acc03.csv
  • acc04.csv
  • acc05.csv

В каждом .csv-файле есть список действий, который нужно осуществить боту:
  • like
  • post
  • like
  • like
Это уже реализовано.

А вот сразу после этого мне нужно в многопотоке запустить бродилку по фейсбуку, которая будет выполнять список действий из csv-файла. В названии файла хранится номер аккаунта, который я должен сложить в переменную и по этому номеру открыть файл профиля.

Проект в проекте не подходит, так как тут нет многопотока. Но зато тут можно передать переменные.

Запуск по сигналу (появление файла) в планировщике не подойдет, так как в многопотоке будут перезаписываться файлы и некоторые проекты с бродилкой по фб просто не запустятся.

Хотелось бы создать батник в Зеннопостере. Там можно поставить галку "не дожидаться выполнения". Он бы добавлял попытки к проекту с бродилкой по фб, но там нельзя указать переменные. Я ведь прав?

Подскажите, как я могу осуществить задуманное?
 
Последнее редактирование:

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
Добрый день, искал решение, не нашел.
Вопрос: Как запустить несколько проектов в многопотоке с разными входящими переменными в каждом потоке?

Условно в 7 вечера запускается проект, который создает n-ное количество .csv-файлов:
  • acc01.csv
  • acc02.csv
  • acc03.csv
  • acc04.csv
  • acc05.csv

В каждом .csv-файле есть список действий, который нужно осуществить боту:
  • like
  • post
  • like
  • like
Это уже реализовано.

А вот сразу после этого мне нужно в многопотоке запустить бродилку по фейсбуку, которая будет выполнять список действий из csv-файла. В названии файла хранится номер аккаунта, который я должен сложить в переменную и по этому номеру открыть файл профиля.

Проект в проекте не подходит, так как тут нет многопотока. Но зато тут можно передать переменные.

Запуск по сигналу (появление файла) в планировщике не подойдет, так как в многопотоке будут перезаписываться файлы и некоторые проекты с бродилкой по фб просто не запустятся.

Хотелось бы создать батник в Зеннопостере. Там можно поставить галку "не дожидаться выполнения". Он бы добавлял попытки к проекту с бродилкой по фб, но там нельзя указать переменные. Я ведь прав?

Подскажите, как я могу осуществить задуманное?
А можешь расписать по пунктам? Чутка не понятно, что именно требуется.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 497
Благодарностей
3 361
Баллы
113
Надо использовать методы из ITaskManagerService для создания задачи и установки её входных настроек.

Минимальный конфиг задачи:
C#:
...
xmlWriter.WriteElementString("Name", "Test");
// время должно быть уникальным, иначе входные настройки будут установлены для нескольких задач
xmlWriter.WriteElementString("CreateTime", "01/01/0001 00:00:00");
xmlWriter.WriteStartElement("Project");
xmlWriter.WriteElementString("ProjectFileLocation", @"D:\test\test.xmlz");
xmlWriter.WriteElementString("ProjectType", "Assembly");
xmlWriter.WriteEndElement();
...
Пример для установки входных настроек:
C#:
Guid id = projectGuid;
string settings = @"<InputSettings>
  <InputSetting>
    <Name>Name</Name>
    <Value>default data</Value>
    <OutputVariable>{-Variable.test-}</OutputVariable>
    <Type>Text</Type>
    <Help>help info</Help>
  </InputSetting>
</InputSettings>";
ZennoPoster.ImportInputSettings(id, settings);
 
Последнее редактирование:
  • Спасибо
Реакции: SHILY и Mikhail B.

wellgo

Client
Регистрация
05.02.2019
Сообщения
10
Благодарностей
0
Баллы
1
А можешь расписать по пунктам? Чутка не понятно, что именно требуется.
Как только появилось n-ое количество .csv-файлов (в данном случае 5, может быть другое количество):
1) Нужно одновременно открыть 5 потоков, в каждом будет отдельный бот лазить по фб;
2) Берем acc01.csv и определяем переменную "acc01" из его названия;
3) Загружаем профиль с номером "01";
4) Идем на фб;
5) Выполняем там действия, которые прописаны в .csv-файле: 3 лайка и один пост.
6) Ждем следующего дня, когда снова в 7 вечера появится список csv-файлов, чтобы повторить все.
 

wellgo

Client
Регистрация
05.02.2019
Сообщения
10
Благодарностей
0
Баллы
1
Надо использовать методы из ITaskManagerService для создания задачи и установки её входных настроек.

Минимальный конфиг задачи:
C#:
...
xmlWriter.WriteElementString("Name", "Test");
xmlWriter.WriteElementString("CreateTime", "01/01/0001 00:00:00");
xmlWriter.WriteStartElement("Project");
xmlWriter.WriteElementString("ProjectFileLocation", @"D:\test\test.xmlz");
xmlWriter.WriteElementString("ProjectType", "Assembly");
xmlWriter.WriteEndElement();
...
Пример для установки входных настроек:
C#:
Guid id = ...;
string settings = @"<InputSettings>
  <InputSetting>
    <Name>Name</Name>
    <Value>default data</Value>
    <OutputVariable>{-Variable.test-}</OutputVariable>
    <Type>Text</Type>
    <Help>help info</Help>
  </InputSetting>
</InputSettings>";
ZennoPoster.ImportInputSettings(id, settings);
Спасибо, буду пробовать. Это если у меня 30 ботов (30 csv-файлов), то создастся 30 разных задач. Правильно понял?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 497
Благодарностей
3 361
Баллы
113

wellgo

Client
Регистрация
05.02.2019
Сообщения
10
Благодарностей
0
Баллы
1

wellgo

Client
Регистрация
05.02.2019
Сообщения
10
Благодарностей
0
Баллы
1
UPD: разобрался, позже скину код, что получился. Может кому пригодится.

Наконец-то заработал такой код:
C#:
// Create a task in xml format
var task =
@"<Id>32432</Id>
<Name>sdfds</Name>
<CreateTime>04/17/2019 20:52:57</CreateTime>
<ExecutionSettings>
    <LimitOfThreads>1</LimitOfThreads>
    <MaxAllowOfThreads>0</MaxAllowOfThreads>
    <DoneSuccesfully>0</DoneSuccesfully>
    <DoneAll>0</DoneAll>
    <NumberOfTries>0</NumberOfTries>
    <LastNumberOfTries>0</LastNumberOfTries>
    <Priority>50</Priority>
    <Proxy>DoNotUseProxy</Proxy>
    <Status>Newbie</Status>
    <ProxyLabels></ProxyLabels>
    <ShouldBeExecutedRandomly>False</ShouldBeExecutedRandomly>
    <GroupLabels>Без метки</GroupLabels>
    <GroupStates>Выполнены</GroupStates>
    <MaxNumOfSuccesStop>1</MaxNumOfSuccesStop>
    <MaxNumOfFailStop>3</MaxNumOfFailStop>
    <NumOfFailStop>0</NumOfFailStop>
</ExecutionSettings>
<SchedulerSettings>
    <StartDate>04/17/2019 20:52:00</StartDate>
    <EndDate>04/17/2030 20:52:00</EndDate>
    <RepetitionCount>1</RepetitionCount>
    <ScheduleType>EveryMinutes</ScheduleType>
    <RepeatType>FinishAfter</RepeatType>
    <ActivateTime>01/01/0001 00:00:00</ActivateTime>
    <ActivateWorkTime>01/01/0001 00:00:00</ActivateWorkTime>
    <IsActive>False</IsActive>
    <NumberOfTries>0</NumberOfTries>
    <Minutes>1</Minutes>
    <Days>1</Days>
    <LastScheduleDate>01/01/0001 00:00:00</LastScheduleDate>
    <IsClearSucces>False</IsClearSucces>
</SchedulerSettings>
<Project>
    <ProjectFileLocation>C:\test2.xmlz</ProjectFileLocation>
    <ProjectType>Assembly</ProjectType>
</Project>";
// Add the task
ZennoPoster.AddTask(task);
Если вставить в экшен "Код C#", то все работает. Но мне нужно вставять разные переменные.
Пробовал в экшене "Работа с текстом" генерировать весь код, а потом вставить переменную в C#-экшен. Ошибка компиляции.


Через макрос не работает, понятное дело. Но и переменную не получается вставить, потому что вставляю ее в кавычки.
Код:
var task = @"Тут место для XML в кавычках. Из-за кавычек тоже не выходит переменную вставить"


@Zymlex , подскажи, как мне xmlWriter.WriteElementString("Name", "Test"); и все это использовать в моем коде?
System.XML в GAC добавил, но все равно не получилось.
 
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 497
Благодарностей
3 361
Баллы
113
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
UPD: разобрался, позже скину код, что получился. Может кому пригодится.

Наконец-то заработал такой код:
C#:
// Create a task in xml format
var task =
@"<Id>32432</Id>
<Name>sdfds</Name>
<CreateTime>04/17/2019 20:52:57</CreateTime>
<ExecutionSettings>
    <LimitOfThreads>1</LimitOfThreads>
    <MaxAllowOfThreads>0</MaxAllowOfThreads>
    <DoneSuccesfully>0</DoneSuccesfully>
    <DoneAll>0</DoneAll>
    <NumberOfTries>0</NumberOfTries>
    <LastNumberOfTries>0</LastNumberOfTries>
    <Priority>50</Priority>
    <Proxy>DoNotUseProxy</Proxy>
    <Status>Newbie</Status>
    <ProxyLabels></ProxyLabels>
    <ShouldBeExecutedRandomly>False</ShouldBeExecutedRandomly>
    <GroupLabels>Без метки</GroupLabels>
    <GroupStates>Выполнены</GroupStates>
    <MaxNumOfSuccesStop>1</MaxNumOfSuccesStop>
    <MaxNumOfFailStop>3</MaxNumOfFailStop>
    <NumOfFailStop>0</NumOfFailStop>
</ExecutionSettings>
<SchedulerSettings>
    <StartDate>04/17/2019 20:52:00</StartDate>
    <EndDate>04/17/2030 20:52:00</EndDate>
    <RepetitionCount>1</RepetitionCount>
    <ScheduleType>EveryMinutes</ScheduleType>
    <RepeatType>FinishAfter</RepeatType>
    <ActivateTime>01/01/0001 00:00:00</ActivateTime>
    <ActivateWorkTime>01/01/0001 00:00:00</ActivateWorkTime>
    <IsActive>False</IsActive>
    <NumberOfTries>0</NumberOfTries>
    <Minutes>1</Minutes>
    <Days>1</Days>
    <LastScheduleDate>01/01/0001 00:00:00</LastScheduleDate>
    <IsClearSucces>False</IsClearSucces>
</SchedulerSettings>
<Project>
    <ProjectFileLocation>C:\test2.xmlz</ProjectFileLocation>
    <ProjectType>Assembly</ProjectType>
</Project>";
// Add the task
ZennoPoster.AddTask(task);
Если вставить в экшен "Код C#", то все работает. Но мне нужно вставять разные переменные.
Пробовал в экшене "Работа с текстом" генерировать весь код, а потом вставить переменную в C#-экшен. Ошибка компиляции.


Через макрос не работает, понятное дело. Но и переменную не получается вставить, потому что вставляю ее в кавычки.
Код:
var task = @"Тут место для XML в кавычках. Из-за кавычек тоже не выходит переменную вставить"


@Zymlex , подскажи, как мне xmlWriter.WriteElementString("Name", "Test"); и все это использовать в моем коде?
System.XML в GAC добавил, но все равно не получилось.
Ошибка в следующем,
Внутри строкового типа, находятся " (кавычки), нужно:
а) Экранировать "" (двойными кавычками),
б) Конкатенация @"<tag>"+ variable +"</tag>";
в) String.Format(@"Точное время: {0} часов, {1} минут, {2} секунд", hour, minute, second);
 
  • Спасибо
Реакции: Yuriy Zymlex

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)