Использование web.py как не блокирующего http-сервера

изучая некоторое базовое программирование с помощью python, я нашел web.py. я застрял с глупой проблемой:

я написал простое консольное приложение с основным циклом, который обрабатывает элементы из очереди в отдельных потоках. моя цель – использовать web.py для добавления элементов в мою очередь и отчета о статусе очереди через веб-запрос. я получил это работает как модуль, но не могу интегрировать его в основное приложение. моя проблема в том, что когда я запускаю http-сервер с app.run (), он блокирует мой основной цикл. также попытался запустить его с thread.start_new_thread, но он все еще блокирует. есть простой способ запустить интегрированный http-сервер web.py в фоновом режиме в моем приложении.

в случае, если я стану жертвой фундаментального недоразумения, любая попытка прояснить мою ошибку в рассуждении поможет;) (пожалуйста, несите меня, я новичок 🙂

  • Content-Length лишается
  • 4 Solutions collect form web for “Использование web.py как не блокирующего http-сервера”

    Я нашел рабочее решение. В отдельном модуле я создаю свой веб-сервер:

    import web import threading class MyWebserver(threading.Thread): def run (self): urls = ('/', 'MyWebserver') app = web.application(urls, globals()) app.run() def POST ... 

    В основной программе я просто звоню

     MyWebserver().start() 

    и чем продолжать то, что я хочу, имея веб-сервер, работающий в фоновом режиме.

    Не было бы проще переписать код основного цикла, чтобы быть функцией, которую вы вызываете снова и снова, а затем вызывать это из функции, которую вы передаете, в runsimple

    Гарантируется, что он не полностью удовлетворит ваши требования, но если вы в спешке, это может быть проще всего.

    или просто использовать Tornado, неблокирующий веб-сервер для Python с API, похожим на webpy – http://www.tornadoweb.org/

    Недавно я также использовал Beanstalkd для очереди задач, которые будут выполняться в отдельном потоке. Ваш обработчик web.py просто переносит задание в трубу, и его выполняет совершенно отдельный скрипт. У вас может быть любое количество из них, и вы получаете преимущества расширенного управления очередью и т. Д.

    Python - лучший язык программирования в мире.