Как запустить обработчик электронной почты django + в App Engine

@ "200" является объектной записью для объекта NSString. У него будет собственное пространство памяти, и johnsmoney укажет на него. Итак, marysmoney никогда не указывает на johnsmoney.

Что на самом деле происходит, это ...

Johns Money 200 // pointer 1
Marys Money 200 // pointer 1
Johns Money 100 // pointer 2
Marys Money 200 // pointer 1

johnsmoney указывает на @ "200". marysmoney также указывает на «200». Когда johnsmoney назначается @ «100», johnsmoney указывает на «100». Пока marysmoney все еще указывает на @ "200".

0
задан LundinCast 16 January 2019 в 17:25
поделиться

2 ответа

В App Engine Standard при использовании среды выполнения Python3.7 тег script под обработчиками должен быть установлен на auto. Вы можете проверить документацию по этому здесь о том, как должен быть сконфигурирован app.yaml, обратите внимание, что он отличается от среды выполнения Python2.7, где вам нужно было указать script для запуска. [1116 ]

Вы можете решить эту проблему, изменив файл app.yaml, например, так:

runtime: python37

entrypoint: gunicorn -b :$PORT handle_incoming_email.app

env_variables:
...

inbound_services:
- mail
- mail_bounce

handlers:
- url: /static
  static_dir: static

- url: /_ah/mail/
  script: auto
  login: admin

Обратите внимание, как требуется изменить script в /_ah/mail/ на auto вместо указав путь к скрипту для запуска. Затем обработчик должен автоматически найти сценарий для выполнения из файлов, развернутых в App Engine.

Далее, в своем файле handle_incoming_email.py вы не определяете какую-либо точку входа для обработки вашего URL /_ah/mail, вы можете решить эту проблему, добавив следующее, например:

import webapp2

app = webapp2.WSGIApplication([
    ('/_ah/mail/', IncomingMailHandler),
], debug=True)

Уведомление Теперь, как я изменил entrypoint в вашем файле app.yaml, чтобы он соответствовал вновь созданной точке входа WSGI в вашем файле handle_incoming_email.py.

Также я не уверен насчет регулярного выражения '/.+' для обработчика, вы должны оставить его в '/.*' .

0
ответ дан Joan Grau 16 January 2019 в 17:25
поделиться

Параметр handler используется для маршрутизации запросов к статическим файлам, затем все остальные маршруты направляются в ваше основное приложение (значение auto является единственной опцией для элемента script, как упомянуто в документе , . ) в вашей точке входа. Это приложение должно обрабатывать запросы маршрутизации. Вы не можете определить другое приложение в том же сервисе.

Я бы предложил развернуть ваше почтовое приложение как отдельную службу в вашем приложении App Engine. Это позволит вам указать конкретные ресурсы или масштабирование для каждого из них. Это будет следовать принципам архитектуры микросервисов, реализованным в App Engine.

0
ответ дан LundinCast 16 January 2019 в 17:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: