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

Discussion in 'Вопросы и обсуждение' started by wellgo, Apr 17, 2019.

  1. wellgo

    wellgo Client

    Joined:
    Feb 5, 2019
    Messages:
    10
    Likes Received:
    0
    Добрый день, искал решение, не нашел.
    Вопрос: Как запустить несколько проектов в многопотоке с разными входящими переменными в каждом потоке?

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

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

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

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

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

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

    Подскажите, как я могу осуществить задуманное?
     
    Last edited: Apr 17, 2019
  2. Denomm

    Denomm Client

    Joined:
    Mar 25, 2019
    Messages:
    477
    Likes Received:
    209
    А можешь расписать по пунктам? Чутка не понятно, что именно требуется.
     
  3. Zymlex

    Zymlex Client

    Joined:
    Oct 24, 2016
    Messages:
    1,476
    Likes Received:
    755
    Надо использовать методы из ITaskManagerService для создания задачи и установки её входных настроек.

    Минимальный конфиг задачи:
    Code (Csharp):
    1. ...
    2. xmlWriter.WriteElementString("Name", "Test");
    3. // время должно быть уникальным, иначе входные настройки будут установлены для нескольких задач
    4. xmlWriter.WriteElementString("CreateTime", "01/01/0001 00:00:00");
    5. xmlWriter.WriteStartElement("Project");
    6. xmlWriter.WriteElementString("ProjectFileLocation", @"D:\test\test.xmlz");
    7. xmlWriter.WriteElementString("ProjectType", "Assembly");
    8. xmlWriter.WriteEndElement();
    9. ...
    Пример для установки входных настроек:
    Code (Csharp):
    1. Guid id = projectGuid;
    2. string settings = @"<InputSettings>
    3.  <InputSetting>
    4.    <Name>Name</Name>
    5.    <Value>default data</Value>
    6.    <OutputVariable>{-Variable.test-}</OutputVariable>
    7.    <Type>Text</Type>
    8.    <Help>help info</Help>
    9.  </InputSetting>
    10. </InputSettings>";
    11. ZennoPoster.ImportInputSettings(id, settings);
     
    Last edited: Apr 17, 2019
    Mikhail B. likes this.
  4. wellgo

    wellgo Client

    Joined:
    Feb 5, 2019
    Messages:
    10
    Likes Received:
    0
    Как только появилось n-ое количество .csv-файлов (в данном случае 5, может быть другое количество):
    1) Нужно одновременно открыть 5 потоков, в каждом будет отдельный бот лазить по фб;
    2) Берем acc01.csv и определяем переменную "acc01" из его названия;
    3) Загружаем профиль с номером "01";
    4) Идем на фб;
    5) Выполняем там действия, которые прописаны в .csv-файле: 3 лайка и один пост.
    6) Ждем следующего дня, когда снова в 7 вечера появится список csv-файлов, чтобы повторить все.
     
  5. wellgo

    wellgo Client

    Joined:
    Feb 5, 2019
    Messages:
    10
    Likes Received:
    0
    Спасибо, буду пробовать. Это если у меня 30 ботов (30 csv-файлов), то создастся 30 разных задач. Правильно понял?
     
  6. Zymlex

    Zymlex Client

    Joined:
    Oct 24, 2016
    Messages:
    1,476
    Likes Received:
    755
    Да.
     
  7. wellgo

    wellgo Client

    Joined:
    Feb 5, 2019
    Messages:
    10
    Likes Received:
    0
    Если что, я бы мог и переделать все так, чтобы в таблицу записывать строки, а не создавать .csv-файлы.

    Но таблица ведь не поможет решить ситуацию? :-)
     
  8. wellgo

    wellgo Client

    Joined:
    Feb 5, 2019
    Messages:
    10
    Likes Received:
    0
    UPD: разобрался, позже скину код, что получился. Может кому пригодится.

    Наконец-то заработал такой код:
    Code (CSharp):
    1. // Create a task in xml format
    2. var task =
    3. @"<Id>32432</Id>
    4. <Name>sdfds</Name>
    5. <CreateTime>04/17/2019 20:52:57</CreateTime>
    6. <ExecutionSettings>
    7.    <LimitOfThreads>1</LimitOfThreads>
    8.    <MaxAllowOfThreads>0</MaxAllowOfThreads>
    9.    <DoneSuccesfully>0</DoneSuccesfully>
    10.    <DoneAll>0</DoneAll>
    11.    <NumberOfTries>0</NumberOfTries>
    12.    <LastNumberOfTries>0</LastNumberOfTries>
    13.    <Priority>50</Priority>
    14.    <Proxy>DoNotUseProxy</Proxy>
    15.    <Status>Newbie</Status>
    16.    <ProxyLabels></ProxyLabels>
    17.    <ShouldBeExecutedRandomly>False</ShouldBeExecutedRandomly>
    18.    <GroupLabels>Без метки</GroupLabels>
    19.    <GroupStates>Выполнены</GroupStates>
    20.    <MaxNumOfSuccesStop>1</MaxNumOfSuccesStop>
    21.    <MaxNumOfFailStop>3</MaxNumOfFailStop>
    22.    <NumOfFailStop>0</NumOfFailStop>
    23. </ExecutionSettings>
    24. <SchedulerSettings>
    25.    <StartDate>04/17/2019 20:52:00</StartDate>
    26.    <EndDate>04/17/2030 20:52:00</EndDate>
    27.    <RepetitionCount>1</RepetitionCount>
    28.    <ScheduleType>EveryMinutes</ScheduleType>
    29.    <RepeatType>FinishAfter</RepeatType>
    30.    <ActivateTime>01/01/0001 00:00:00</ActivateTime>
    31.    <ActivateWorkTime>01/01/0001 00:00:00</ActivateWorkTime>
    32.    <IsActive>False</IsActive>
    33.    <NumberOfTries>0</NumberOfTries>
    34.    <Minutes>1</Minutes>
    35.    <Days>1</Days>
    36.    <LastScheduleDate>01/01/0001 00:00:00</LastScheduleDate>
    37.    <IsClearSucces>False</IsClearSucces>
    38. </SchedulerSettings>
    39. <Project>
    40.    <ProjectFileLocation>C:\test2.xmlz</ProjectFileLocation>
    41.    <ProjectType>Assembly</ProjectType>
    42. </Project>";
    43. // Add the task
    44. ZennoPoster.AddTask(task);
    Если вставить в экшен "Код C#", то все работает. Но мне нужно вставять разные переменные.
    Пробовал в экшене "Работа с текстом" генерировать весь код, а потом вставить переменную в C#-экшен. Ошибка компиляции.
    [​IMG]

    Через макрос не работает, понятное дело. Но и переменную не получается вставить, потому что вставляю ее в кавычки.
    Code (text):
    1. var task = @"Тут место для XML в кавычках. Из-за кавычек тоже не выходит переменную вставить"
    [​IMG]

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

    Zymlex Client

    Joined:
    Oct 24, 2016
    Messages:
    1,476
    Likes Received:
    755

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)