Q:

What should I call the symbol “|”？A pipe or bit operator

Just see the following:
def update_page_info(url):
    # fetch_page -> parse_page -> store_page
    chain = fetch_page.s(url) | parse_page.s() | store_page_info.s(url)
    chain()

@app.task()
def fetch_page(url):
    return myhttplib.get(url)

@app.task()
def parse_page(page):
    return myparser.parse_document(page)

@app.task(ignore_result=True)
def store_page_info(info, url):
    PageInfo.objects.create(url=url, info=info)

A:

You have a pipe character (more correctly called the vertical bar character), which when used in an expression is called a binary bitwise operator:

The | operator yields the bitwise (inclusive) OR of its arguments, which must be integers.

The operator is hookable via the __or__ special method, which is what SQLAlchemy uses to build queries, as seen in your example code (in contrast to the boolean or operator, which can't be hooked into due to its short-circuiting behaviour).

