开始生产芹菜工人.在Azure/Linux App Service上使用Django/Python



我有一个带有API的网站,客户可以发送其API-POST呼叫。这些API的附件以PDF或类似的形式存储在文件夹/媒体/存储/中。该应用程序用Django编写。

通过DRF和Serializers将API-CALL存储在模型中。数据存储后,完成了一些逻辑,发送电子邮件OS,查找和存储在数据表中等。因为这需要很多时间。我在应用程序中实现了芹菜(Redis作为经纪人的Azure Cache(,因此只能像往常一样完成模型中的第一个存储空间。其余的我们通过芹菜排队。

这在我的本地机器(MAC OS(上很好地工作。但不在生产中(Azure/Linux(。

我尝试过git钩,但是我无法正常工作。我已经通过Azure VM上的SSH尝试了一些终端,但是没有运气...我研究了守护程序,但很复杂。

settings.py

CELERY_BROKER_URL = 'redis://:<password>=@<appname>.redis.cache.windows.net:6379/0'
CELERY_RESULT_BACKEND = 'django-db'
CELERY_CACHE_BACKEND = 'django-cache' 

芹菜。py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hapionline.settings')
app = Celery('hapionline')
app.config_from_object('django.conf:settings', namespace="CELERY")
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

views.py

class ProcSimpleList(generics.CreateAPIView): # Endast Create för att skapa en proc
    serializer_class = ProcSimpleSerializer
    permission_classes = (IsAdminOrReadOnly,)
    lookup_url_kwarg = 'proc_id'
    def perform_create(self, serializer):
        q = serializer.save()
        # Queue from starting worker. Queue created when starting cereal.
        transaction.apply_async(queue='high_priority', args=(q.proc_id, self.request.user.pk))

本地机器:所有人都可以与命令:芹菜-a hapionline工作者-L信息-Q high_priority

生产:我不知道在生产服务器上运行命令的位置?如果工人是在本地机器上启动的,则启动Azure缓存,并调用生产环境API可以使用。但是,由于工人是在本地启动的,因此API中太过附加的文件是不正确的,局部的,而不是类似于生产。/USER/../media/..代替/wwwroot/../Media/..

有什么想法吗?我如何在生产VM上启动工人?有没有办法在Git推动Azure Master之后运行启动工作"脚本"?

我跳过了Azure,将应用程序移至Heroku。这是一种魅力。

相关内容

  • 没有找到相关文章

最新更新