Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Python Loop - Mem kullaniminda problem yasiyorum


iiimriii

Öne çıkan mesajlar

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()
Link to comment
Sosyal ağlarda paylaş

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
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...