Bitcoin Forum

Local => Кодеры => Topic started by: mak on June 12, 2017, 10:24:08 AM



Title: прототип магазина файлов
Post by: mak on June 12, 2017, 10:24:08 AM
Я на Питоне написал прототип магазина файлов http://fpauk.narod.ru/ProtoFileShop.tar.gz (http://fpauk.narod.ru/ProtoFileShop.tar.gz)
Сообщал в "Идеях"
В качестве интерфейса используется стандартный браузер с HTML запросами.
Магазин ProtoFileShop.py переадресует запрос файла на localhost:8120 на запущенный специальный
 клиент ProtoFileBuyer.py . Тот опять к магазину.
Под FireFox все нормально. Chromeium перенаправив запрос, оставляет канал открытым
и ProtoFileBuyer.py не зайти. Как этот канал закрыть со стороны магазина?


Title: Re: прототип магазина файлов
Post by: mak on June 22, 2017, 07:04:50 PM
 Для асинхронной работы сервера нужно воспользоваться библиотекой ThreadingMixIn
В http://fpauk.narod.ru/ProtoFileShop1.tar.gz (http://fpauk.narod.ru/ProtoFileShop1.tar.gz) все работает.
За реализацию файл сервера в виде плагина для electrum (https://electrum.org) (electrum-ltc (https://electrum-ltc.org/)) даю 222 mBTC
Это мне нужно в качестве прототипа


Title: Re: прототип магазина файлов
Post by: mak on June 23, 2017, 01:54:08 PM
Смотрят другие плагины, методом тыка реализацию файл сервера в виде плагина:
Code:
from electrum_ltc.plugins import BasePlugin, hook
import SimpleHTTPServer
import SocketServer
import threading

class HTTPServer(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self)
        self.daemon = True

    def run(self):
        Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
        httpd = SocketServer.TCPServer(("",  8000), Handler)
        httpd.serve_forever()

class Plugin(BasePlugin):

    def __init__(self, parent, config, name):
        BasePlugin.__init__(self, parent, config, name)
        self.Server = HTTPServer()
        self.Server.start()

Вроде работает.. Не знаю, насколько корректно.
Буду пробовать заменить это на покупателя файлов.