iiimriii Mesaj tarihi: Ekim 12, 2018 Mesaj tarihi: Ekim 12, 2018 Merhaba arkadaslar, Bi arkadasimla beraber websocket'a baglanip, bagli kalmaya calisiyoruz. Fakat nedense her 7 saatte bir baglanti kopuyor. Bulabildigimiz tek veri proc//fd de ne zaman process sayisi 1024 olsa baglanti kopuyor. Programin loop undan dolayi oldugunu saniyoruz. Fakat ubuntuda ulimit -n i arttirarak cozmemiz cok mantikli degil. Elimizdeki kod asagida paylasiyorum. Yardimci olabilirseniz cok seviniriz. Gunlerdir cozmeye calisiyoruz. import time import datetime import os import sys sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) from btfxwss import BtfxWss from app import db from app.models import LOG_HISTORY, BOOKING_ORDERS, BOOKING_CANCELLING, add_row, delete_rows import config logger = config.Logger('bitfinex log websocket.log') def get_authenticateWss(): authenticated_wss = BtfxWss(key=config.socket_api_key, secret=config.socket_api_secret) authenticated_wss.start() while not authenticated_wss.conn.connected.is_set(): time.sleep(1) authenticated_wss.authenticate() time.sleep(5) return authenticated_wss def main(authenticated_wss): while authenticated_wss.conn.connected.is_set(): booking_orders = BOOKING_ORDERS.query.all() for booking_order in booking_orders: payload = { 'cid': booking_order.cid, 'symbol': 't%s' % booking_order.symbol.split(":")[-1].strip(), 'type': "EXCHANGE LIMIT", 'amount': str(booking_order.amount), 'price': str(booking_order.price), 'hidden': 1 } authenticated_wss.new_order(**payload) logger.info("Creating the Order: %s" % str(payload)) db.session.delete(booking_order) if float(booking_order.amount) >= 0: add_row(LOG_HISTORY, [datetime.datetime.now(), booking_order.symbol, Buy Order, str(payload)]) else: add_row(LOG_HISTORY, [datetime.datetime.now(), booking_order.symbol, Selling Order, str(payload)]) time.sleep(5) booking_cancels = BOOKING_CANCELLING.query.all() for booking_cancel in booking_cancels: payload = { 'id': booking_cancel.order_id, 'cid': booking_cancel.order_cid, 'cid_date': booking_cancel.create_mts } authenticated_wss.cancel_order(**payload) logger.info("Cancelling the Order: %s" % str(payload)) db.session.delete(booking_cancel) add_row(LOG_HISTORY, [datetime.datetime.now(), booking_cancel.symbol, Cancelling Order, str(payload)]) time.sleep(5) # time.sleep(10) if __name__ == "__main__": delete_rows(BOOKING_ORDERS) delete_rows(BOOKING_CANCELLING) while True: logger.info("-------------- START ------------------") authenticated_wss = get_authenticateWss() try: main(authenticated_wss) except Exception as e: logger.error(e) finally: logger.info("---------- STOP -----------------") authenticated_wss.stop()
reyou Mesaj tarihi: Ekim 12, 2018 Mesaj tarihi: Ekim 12, 2018 kullandiginiz library nin tam detaylarini bilemicem ama, ordaki while loop lar pek de baglanip o sekilde kaldiginizi gostermiyor. https://github.com/websocket-client/websocket-client suraya baktim, olmasi gerektigi gibi baglantiyi kurup, event listener lar ile islem yapiyor. Su kisim sanirim sizin yapmaniz gereken; Long-lived connection https://github.com/websocket-client/websocket-client#long-lived-connection
Öne çıkan mesajlar