У меня один год опыта работы с Python; Тем не менее, я все еще считаю себя новичком, потому что мне не хватает четкого понимания его основ. Теперь мне нужно одновременно запустить несколько экземпляров этого бота, каждый для отдельной пары форекс (например, 'eur_usd', 'usd_jpy'). Я любезно хочу спросить советы, как сделать это правильно и надежно? > Запрашивает обмен и получает последние данные один раз через 5 минут
[*] Проверки на открытие позиции
Если сигнал существует, отправьте запрос на открытие позиции
Смотрит открытое положение, пока оно не будет закрыто < /li>
снова запускает весь процесс < /li>
< /ol>
Вот фрагмент кода из основной программы
def run(self):
if self.state == 'fetch_data':
self.s1.run_pending()
elif self.state == 'check_signal':
self.check_signal()
elif self.state == 'open_position':
self.open_position()
elif self.state == 'watch_trade':
self.watch_trade()< /code>
< /div>
< /div>
< /p>
Мне нужен этот бот, чтобы работать в фоновом режиме в течение многих дней. Итак, в моем main.py я делаю это: < /p>
def run_bot(ticker):
bot = Bot(ticker)
while True:
bot.run()
time.sleep(0.1)< /code>
< /div>
< /div>
< /p>
Тогда я попытался использовать многопроцесс (и одновременно. Несколько экземпляров одновременно. < /p>
from concurrent.futures import ProcessPoolExecutor
if __name__ == '__main__':
with ProcessPoolExecutor(max_workers=3) as executor:
executor.map(run_bot, TICKERS)
print(f'Run process ...')< /code>
< /div>
< /div>
< /p>
Проблема с многопроцестрой заключается в том, что он какое -то время застрял (приблизительно Через 1 час). По сути, это начинает пропускать некоторые запросы запланированных. Иногда он возобновляется позже и может сделать несколько запросов (обычно с задержкой в несколько минут по сравнению с запланированным временем), а затем снова застрял. Полем Здесь предложено исправление. Я попробовал это, но это не сработало для меня. Он бросает ошибку из -за этой строки кода. Однако эта строка была фактически предложена в качестве решения. class = "Snippet-Code-Html Lang-Html PrettyPrint-Override">from multiprocessing import set_start_method
set_start_method("spawn")< /code>
< /div>
< /div>
< /p>
Подводя итог, есть несколько вопросов, которые я пытаюсь найти ответы to: < /p>
Общий. Как лучше всего запускать несколько экземпляров приложения /бота одновременно? Процесс никогда не заканчивается, пока не будет остановлен. < /Li>
Каковы потенциальные альтернативы? что каждый из экземпляров бота, чтобы быть как -то независимым. Если один экземпляр бросает ошибку или сбой другой должен продолжать работать.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ifferent-a
Как запустить несколько параллельных экземпляров питона Infinite Loop Bot с разными аргументами одновременно? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение