Ich habe ein Jahr Erfahrung mit Python; Ich betrachte mich jedoch immer noch als Anfänger, weil mir ein solides Verständnis der Grundlagen fehlt. Jetzt muss ich nur wenige Instanzen dieses Bots gleichzeitig ausführen, jeweils für ein einzelnes Forex -Paar (z. B. 'Eur_usd', 'USD_JPy'). Ich möchte freundlicherweise nach Tipps fragen, wie man das richtig und zuverlässig macht? > Fordert den Austausch an und erhalten Sie aktuelle Daten einmal in 5 Minuten
[*] Überprüfungen nach Signal, um die Position zu öffnen
Wenn das Signal vorhanden ist, senden Sie die Anforderung an die Öffnung von
Startet den gesamten Vorgang erneut < /li>
< /ol>
Hier ist das Code-Snippet aus dem Kernprogramm
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>
Ich brauche diesen Bot, um viele Tage im Hintergrund zu laufen. Also in meinem main.py mache ich das: < /p>
def run_bot(ticker):
bot = Bot(ticker)
while True:
bot.run()
time.sleep(0.1)< /code>
< /div>
< /div>
< /p>
Dann habe ich versucht, Multiprocessing (und Concurrent.Futures) zum Ausführen zu verwenden Nur wenige Instanzen gleichzeitig. -Code-html Lang-html PrettyPrint-Override ">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>
Das Problem mit der Multiprozessierung ist, dass es für einige Zeit ausgeführt und dann steckt (ungefähr stecken) nach 1 Stunde). Grundsätzlich beginnt es einige geplante Anfragen zu überspringen. Manchmal wird es später fortgesetzt und kann nur wenige Anfragen stellen (normalerweise mit einer Verzögerung von wenigen Minuten im Vergleich zu geplanter Zeit) und dann erneut einlösten. . Hier wird ein Fix vorgeschlagen. Ich habe es versucht, aber es hat bei mir nicht funktioniert. Es macht Fehler aufgrund dieser Codezeile. Diese Zeile wurde jedoch tatsächlich als Lösung vorgeschlagen. class = "snippet-code-html Lang-html PrettyPrint-Override">from multiprocessing import set_start_method
set_start_method("spawn")< /code>
< /div>
< /div>
< /p>
Um zusammenzufassen, gibt es nur wenige Fragen, die ich versuche, Antworten zu finden an: < /p>
Ein allgemeiner. Was ist die beste Praxis, um nur wenige Instanzen einer App /eines Bots gleichzeitig auszuführen? Der Prozess endet nie, bis gestoppt wird. < /Li>
Was sind die potenziellen Alternativen? dass jeder der Bot -Instanzen irgendwie unabhängig ist. Wenn eine Instanz einen Fehler verursacht oder abstürzt, sollte andere weiter ausgeführt werden.
Wie fahre ich nur wenige parallele Instanzen eines Python Infinite Loop Bot mit unterschiedlichen Argumenten gleichzeiti ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post