Запуск сценариев в рамках Pyramid (т.е. без сервера) - PullRequest
3 голосов
/ 01 июня 2011

У меня достаточно опыта работы с PHP-фреймворками и Python для написания сценариев, поэтому сейчас я перехожу к Pyramid.

Я хотел бы знать, каков «правильный» способ запуска сценария вПирамида.То есть, как я должен настроить его так, чтобы он был частью приложения и имел доступ к конфигурации и, следовательно, к базе данных, но не работал через paster (или любой другой WSGI).

В качестве примера, скажем, у меня естьвеб-приложение, которое, пока пользователь находится в автономном режиме, получает обновления Facebook через веб-сервис.Я хочу написать скрипт для опроса этого сервиса и сохранить его в базе данных, готовой к следующему входу в систему.

Как мне сделать это с точки зрения:

  1. Добавление переменных в INI-файл
  2. Правильный запуск скрипта

Я понимаю основы модулей и пакетов Python;однако я не совсем понимаю настройку Конфигуратора / Пастера / пакета, в которой я подозреваю, что ответ лжив.

Спасибо

Обновление:

Спасибо, это похоже начто я ищуЯ отмечаю, что вы должны следовать определенной структуре (например, иметь атрибуты summary и parser) и что функция с именем command () всегда будет запускаться.Мой тестовый код теперь выглядит примерно так:

class AwesomeCommand(Command):

max_args = 2
min_args = 2

usage = "NAME"
# These are required
summary = "Say hello!"
group_name = "My Package Name"
# Required:
parser = Command.standard_parser(verbose=True)


def command(self):

    # Load the config file/section
    config_file, section_name = self.args
    # What next?

Теперь я застрял в том, как получить настройки самостоятельно.Например, в init.py вы можете сделать это:

 engine = engine_from_config(settings, 'sqlalchemy.')

Что мне нужно сделать, чтобы преобразовать файл конфигурации в настройки?

РЕДАКТИРОВАТЬ:(Более простой) способ сделать это в Pylons здесь: Запустить контроллер Pylons как отдельное приложение?

Ответы [ 4 ]

3 голосов
/ 03 февраля 2012

Начиная с Pyramid 1.1, это обрабатывается каркасом:

http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/commandline.html#writing-a-script

1 голос
/ 03 июня 2011

paster запускает приложение, используя INI-файл, описывающий это приложение.команда serve - встроенная команда для запуска приложения wsgi и его обслуживания.НО, вы можете написать другие команды .

from paste.script.command import Command
class AwesomeCommand(Command):
    def command(self):
        print "the awesome thing it does"

и затем зарегистрировать их как точки входа в вашем файле setup.py.таким образом, как pshell команда .

1 голос
/ 10 июня 2011

Пройдя в список обсуждений пилонов, я пришел с ответом.Надеюсь, это кому-нибудь поможет:

 #Bring in pyramid application--------------------------------------

 import pyramid
 from paste.deploy import appconfig
 config_file = '/path_to_config_file/configname.ini'

 name = 'app_name'
 config_name = 'config:%s' % config_file
 here_dir = os.getcwd()

 conf = appconfig(config_name, name, relative_to=here_dir)

 from main_package import main
 app = main(conf.global_conf, **conf.local_conf)

 #--------------------------------------------------------------------------
0 голосов
/ 02 июня 2011

вам нужно создать представление для этого действия и затем запустить его, используя:

paster request development.ini /url_to_your_view
...