cubes = CubesProductCard.objects.all() context = { 'date': now().strftime('%Y-%m-%d %H:%M'), 'cubes': cubes, } xml_raw = render_to_string(template_name="myWarehouse/yml.xml", context=context) with open(MYWAREHOUSE_YML_FILE, "w") as fp: fp.write(xml_raw) app.add_periodic_task( crontab(minute=7, hour='*/2'), generate_mywarehouse_yml_file.s(), name='generate_mywarehouse_yml_file', ) @beat_init.connect def configure_workers(**kwargs): import os.path if not os.path.isfile(MYWAREHOUSE_YML_FILE): generate_mywarehouse_yml_file.delay() @app.task def sync_mywarehouse(): vendor_codes_in_stock = set() with requests.Session() as session:
from config.celery import app from celery.schedules import crontab from .test_task import test_task, periodic_task from .sync_sdek import sync_sdek, sync_sdek_points from .sync_pick_point import sync_pick_point app.add_periodic_task( crontab(minute="0", hour="0", day_of_week="1"), sync_sdek.s(), name='sync_sdek', ) app.add_periodic_task( crontab(minute="0", hour="0", day_of_week="2"), sync_pick_point.s(), name='sync_pick_point', ) app.add_periodic_task( crontab(minute="0", hour="0", day_of_week="3"), sync_sdek_points.s(), name='sync_sdek_points', )
'club_prices': lambda instance: club_prices(groups=groups, instance=instance) } xml_raw = render_to_string(template_name="api/retail-rocket.xml", context=context) with open(FILEPATH, "w") as fp: fp.write(xml_raw) @app.task def update_images(): for instance in Product.objects.all(): try: image = instance.image.url thumb = instance.thumbnail.url except OSError: instance.image = instance.image.field.default instance.save() instance.image.close() instance.thumbnail.close() app.add_periodic_task( crontab(minute="01", hour='05'), generate_yml_file.s(), name='generate_yml_file', )
'products': products, 'get_yml_node': get_yml_node, 'base_url': 'https://presidentwatches.ru' } xml_raw = render_to_string( template_name="api/yml.xml", context=context ) with open(YML_FILEPATH, "w") as fp: fp.write(xml_raw) time.sleep(delay) os.rename(YML_FILEPATH, YML_FILEPATH_ORIGIN) app.add_periodic_task( crontab(minute="*/30"), generate_yml_file.s(), name='generate_yml_file', ) @beat_init.connect def configure_workers(**kwargs): import os.path if not os.path.isfile(YML_FILEPATH): generate_yml_file.delay()
@app.task def sync_assist_order(order_id): response = requests.post(API_URL, data={ "Merchant_ID": MERCHANT_ID, "Login": MERCHANT_LOGIN, "Password": MERCHANT_PASSWORD, "Format": XML_FORMAT, "Ordernumber": str(order_id) }) result = ET.ElementTree(ET.fromstring(response.text)) is_approved = any( (os.text == "Approved" for os in result.findall("order/orderstate"))) if is_approved: Order2.objects.filter(id=order_id).update(assist_status="approved") @app.task def sync_assist(): for order in Order2.objects.filter(assist_status="in_process"): sync_assist_order.delay(order.id) app.add_periodic_task( crontab(minute='*/15'), sync_assist.s(), name='sync_assist', )
def sync_sdek_delivery_point(): SdekDeliveryPointSynchronizer().sync() @app.task def sync_sdek_couriers_delivery(): SdekCourierSynchronizer().sync() @app.task def sync_pickpoint_delivery(): PickpointSynchronizer().sync() @app.task def sync_delivery(): sync_sdek_delivery_point.delay() sync_sdek_couriers_delivery.delay() sync_pickpoint_delivery.delay() app.add_periodic_task( crontab( minute=0, hour=0, day_of_week=2, ), sync_delivery.s(), name='sync_delivery', )
for row in rows: quantity = int(row['quantity']) if quantity <= 0: continue upid = row.get('code', None) print(upid) if upid is not None: try: upid = int(upid) models_in_store.add(upid) except ValueError: pass page_num += 1 params['offset'] = page_num * limit time.sleep( 0.25 ) # Не более 5 запросов в секунду с одного адреса от одного пользователя Product.objects.update(is_in_store=False) qs = Product.objects.filter(id__in=models_in_store) print('###') print(qs.count()) print('###') qs.update(is_in_store=True) app.add_periodic_task( crontab(minute=0, hour='*/2'), sync_store.s(), name='sync_store', )
def sync_delivery_statuses(): data = sort_orders_by_service() sync_sdek_orders(data['sdek']) sync_pickpoint_orders(data['pickpoint']) sync_postal_orders(data['rupost']) @app.task def set_rupost_numbers(filename): df = pd.read_excel(filename) mapping = {} for index, row in df.iterrows(): dispatch_number = row['Номер отправления'] public_id = row['Заказ'] mapping[public_id] = dispatch_number pks = list(mapping.keys()) qs = Order.objects.filter(public_id__in=pks) with transaction.atomic(): for instance in qs: instance.tracking['type'] = 'rupost' instance.tracking['dispatch_number'] = dispatch_number instance.save() app.add_periodic_task( crontab(minute="01", hour='08'), sync_delivery_statuses.s(), name='sync_delivery_statuses', )